【发布时间】:2015-07-25 21:06:39
【问题描述】:
我正在尝试通过向列表中添加和插入条目来操作不可变 (3.6.4) 游标:
var data = Immutable.fromJS({a: {b: [0, 1, 2]}});
var cursor = Cursor.from(data, ['a', 'b'], function(newData){
data = newData;
});
cursor = cursor.push(3);
var newList = cursor.splice(1,0,11);
cursor.update(function(x){return newList;});
console.log(data.toJS().a.b); //Result [0, 11, 1, 2, 3]
为什么 cursor.splice 没有更新“数据”?
现在,使用 withMutation,splice 似乎不起作用。我已经在日志语句旁边添加了结果。
var data = Immutable.fromJS({a: {b: [0, 1, 2]}});
var cursor = Cursor.from(data, ['a', 'b'], function(newData){
console.log("Setting Data");
data = newData;
});
cursor.withMutations(function(c){
console.log(c.toJS()); //[0, 1, 2]
c.push(3).toJS();
console.log(c.toJS()); //[0, 1, 2, 3]
var newList = c.splice(1,0,11);
console.log(newList.toJS()); //[11]
console.log(c.toJS());//[]
c.update(function(x){return newList;});
});
实现这一目标的正确方法是什么?
【问题讨论】:
标签: cursor immutable.js