ImmutableJS - 更新矩阵的单元格

时间:2016-09-26 14:13:26

标签: javascript immutable.js

我有这个矩阵:

<md-grid-list md-cols="4" md-row-height="4:1" md-gutter="8px">
    <md-grid-tile class="gray" md-colspan="4">
        <div layout="column" layout-fill>this is a static row</div>
    </md-grid-tile>
    <md-grid-tile class="gray"  ng-repeat="item in appCtrl.items" md-colspan="4">
        <div layout="row" flex>
            <div flex>this row</div>
            <div flex>should repeat</div>
            <div flex>for every</div>
            <div flex>item</div>
        </div>
      </md-grid-tile>
</md-grid-list>

这个功能:

const initialState = Immutable.fromJS({ 
  board: [
          ['','',''],
          ['','',''],
          ['','','']
         ]
});
  1. 克隆矩阵(到newBoard obj)
  2. 尝试设置矩阵单元格的值 - 不起作用
  3. 尝试输出带有单元格值的消息 - 不起作用
  4. 我试过阅读ImmutableJS文档,但找不到任何关于在矩阵内设置值的内容(“List”类型的ImmutableJS)。

1 个答案:

答案 0 :(得分:2)

您可以使用setIn 它不会改变该值。这就是ImmutableJS的观点。它将返回原始数据结构的略微更改版本。如果您只是在一行上写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. 。你根本不需要克隆任何东西。

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

begin tran
insert into sometable
select some columns