使用方法を練習しようとしていますimmutable.js
しかし、私のレデューサーを不変の方法で編集する方法はわかりません。 (私はgithub上でいくつかのコードを見つけようとしますが、それらは基本的です)
また、私のコンポーネントにもエラーがあります。
私は私の減速機をリファクタリングする方法を私にギルドに助けを求めたいですか?ここで immutable.jsでreduxを変換する方法
元reducer.js
import * as TYPE from '../constants/ActionTypes';
const INIT_STATE = {
box: [
{ 'id': 1,
'axisX': 10,
'axisY': 10,
'width': 200,
'height': 200,
},
{ 'id': 2,
'axisX': 20,
'axisY': 300,
'width': 200,
'height': 200,
}
]
};
export default function editZone(state = INIT_STATE, action) {
let newState = null;
switch (action.type) {
case TYPE.UPDATE_POSITION:
newState = Object.assign({}, state);
newState.box = newState.box.map(box => {
if (box.id === action.payload.id) {
box.axisX = action.payload.x;
box.axisY = action.payload.y;
}
return box;
});
return newState;
default:
return state;
}
}
そして、私はそれがimmutable.js
を使用するために編集され、私はちょうどfromJS()
**不変でラップINIT_STATE
を追加します減速材.js **
import {List, Map, fromJS} from 'immutable';
const INIT_STATE = fromJS({
box: [
{ 'id': 1,
'axisX': 10,
'axisY': 10,
'width': 200,
'height': 200,
},
{ 'id': 2,
'axisX': 20,
'axisY': 300,
'width': 200,
'height': 200,
}
]
});
そして、私はエラーに直面:TypeError: Cannot read property 'map' of undefined
私はそれは私がこれをどのように修正することができますMap {size: 2, _root: ArrayMapNode, __ownerID: undefined, __hash: undefined, __altered: false}
示した出力this.props.editZone
コンソールしようとすると?私は私のコードでImmutable.jsを使用しています
boxComponent.js
const boxes = this.props.editZone.box;
const playgroundObjetcs = boxes.map(box => {
return (...)
});
stateのboxプロパティを取得するには、最初にstate.get( 'box')を使用します。次に、その配列のmapを使用できます。 –