我有一个矩阵:
const initialState = Immutable.fromJS({
board: [
['','',''],
['','',''],
['','','']
]
});这一职能:
function cellClick(state,i,j) {
const board = state.get('board');
var newBoard = board.map(function(arr) {
return arr.slice();
});
newBoard.set(i,j,'Hi');
alert(newBoard.get(i).get(j));
}我尝试过阅读ImmutableJS文档,但是没有发现任何关于在矩阵中设置值的东西("List“类型的ImmutableJS)。
发布于 2016-09-26 14:17:36
您可以使用.setIn([i, j], 'Hi'),但是它不会改变值。这就是ImmutableJS的意义所在。它将返回一个略有改变的原始数据结构版本。如果您只是在一行上写setIn,并且没有在任何地方分配结果,那么什么都不会发生。什么都不会改变。这就是问题所在。
getIn和setIn非常有用。如果不存在某些东西,它们也可以提供默认值。我也不认为你需要.slice()。你根本不需要克隆任何东西。
这是一个不变的数据结构,没有人能改变它,这是一个美丽的部分。
const initialState = Immutable.fromJS({
board: [
['','',''],
['','',''],
['','','']
]
});
const nextState = initialState.setIn(['board', 0, 0], 'Hi')
// Now nextState has 'Hi' in it's first column and row.
// initialState is still the same as it was, it is not changed.https://stackoverflow.com/questions/39705228
复制相似问题