首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImmutableJS -更新矩阵的单元格

ImmutableJS -更新矩阵的单元格
EN

Stack Overflow用户
提问于 2016-09-26 14:13:26
回答 1查看 214关注 0票数 2

我有一个矩阵:

代码语言:javascript
复制
const initialState = Immutable.fromJS({ 
  board: [
          ['','',''],
          ['','',''],
          ['','','']
         ]
});

这一职能:

代码语言:javascript
复制
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));
}
  1. 克隆矩阵(到newBoard obj)
  2. 尝试为矩阵单元格设置一个值-不工作
  3. 尝试输出带有单元格值的消息-不工作

我尝试过阅读ImmutableJS文档,但是没有发现任何关于在矩阵中设置值的东西("List“类型的ImmutableJS)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 14:17:36

您可以使用.setIn([i, j], 'Hi'),但是它不会改变值。这就是ImmutableJS的意义所在。它将返回一个略有改变的原始数据结构版本。如果您只是在一行上写setIn,并且没有在任何地方分配结果,那么什么都不会发生。什么都不会改变。这就是问题所在。

getInsetIn非常有用。如果不存在某些东西,它们也可以提供默认值。我也不认为你需要.slice()。你根本不需要克隆任何东西。

这是一个不变的数据结构,没有人能改变它,这是一个美丽的部分。

代码语言:javascript
复制
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.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39705228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档