Я использую immutable.js функцию update() и updateIn(). Но результат не получается так, как ожидалось.Функция неизменного обновления не работает
const initialState = Immutable.fromJS({cartList: [
{
id: 1,
name: "Product One",
quantity:1
},{
id: 2,
name: "Product Two",
quantity:2
}],
productList:[{
name: "Product One",
id: 1,
availability:2
},{
name: "Product Two",
id: 2,
availability:2
},{
name: "Product Three",
id: 3,
availability:4
}]});
var action = {
id: 2,
name: "Product Two",
quantity:2
};
initialState = initialState.updateIn(['cartList'], cartList => cartList.push(action)).toJS();
initialState = initialState.updateIn(['productList'], productList => {
productList.map(product => {
if(action.id == product.get("id")){
return product.update("availability", value => value-1);
} else
return product
});
}).toJS();
console.log(initialState.toJS());
Я попробовал это в jsfiddle. Но в initialState изменений нет.
Спасибо заранее.
Даже если вы измените 'initialState' на var или let, productList будет не определен после функции map. Можете ли вы мне помочь? –
@AmalaJames: Это поможет, если код будет отформатирован/отформатирован разумным, последовательным образом. Вы можете использовать все, что захотите, в своем собственном коде, но при обращении за помощью полезно сделать код читаемым для других. –
@AmalaJames: Я обновил ответ. Вы не используете возвращаемое значение 'map'. –