2016-10-30 2 views
0

Итак, у меня есть неизменяемый список по умолчанию:Immutable.js и как заменить список с новым списком

var someObject = Immutable.Map({ 
    myList: Immutable.List([4,5,6,7]) 
}) 

Теперь я позволил человеку переписать этот список, но я все еще нужен, чтобы содержаться в "SomeObject". В принципе, если пользователь поставляет массив, мы заменяем то, что находится в myList, с этим «новым списком». Я так старался, не повезло.

в основном, если этот новый список существует, используйте его - если нет, либо сбросьте myList к себе, либо проигнорируйте.

//example 
var newList = [44444,99999] 

       someObject.get('myList') 
        .clear() 
         .set('myList', newList || someObject.get('myList')) 

ответ

0

Это невозможно, так как объекты, поставляемые immutable.js неизменны - это их дело.

Вместо того, чтобы пытаться мутировать SomeObject, один из способов сделать то, что вы пытаетесь сделать бы, чтобы определить defaultList = Immutable.List(4, 5, 6, 7), а затем построить someObjectпосле пользователь имеет вход их список. Что-то вроде строк

if (userList) { 
    someObject = Immutable.Map({myList: Immutable.List(userList)}) 
} else { 
    someObject = Immutable.Map({myList: Immutable.List(defaultList)}) 
} 
+0

Я вижу, что вы говорите, но это не масштабируется. Я не должен был проверять myList, а если он не существует, используйте defaultList. Я не понимаю, как вы не можете «установить» неизменяемый объект со своими помощниками с «новыми данными». Я делаю это с объектами/Map - обновлением и удалением .. все, что я хочу сделать с этим «.List», это очистить и перевести его с помощью пользовательских данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^