在用reactjs和redux开始我的开发之后,我想在使用redux时使用immutable.js会更好。Redux和不可变的js,我试图使用不可变的后我失去了我的状态
但是...也许我是迟缓的,或者需要一些练习才能正确使用,一切都会崩溃。
如果你能帮助理解这里有什么问题,那就太棒了!
所以,这里是我的第一个代码:
export function posts(state = {
isFetching: true,
didInvalidate: false,
items: []
}, action) {
switch (action.type) {
case INVALIDATE_REQ:
return Object.assign({}, state, {
didInvalidate: true
});
case REQUEST_POSTS:
return Object.assign({}, state, {
isFetching: true,
didInvalidate: false
});
case RECEIVE_POSTS:
return Object.assign({}, state, {
isFetching: false,
didInvalidate: false,
items: action.posts
});
default:
return state;
};
};
那我改变这样:
const initPostState = Map({
isFetching: true,
didInvalidate: false,
items: []
});
export function posts(state = initPostState, action) {
switch (action.type) {
case INVALIDATE_REQ:
return state.set('didInvalidate', true);
case REQUEST_POSTS:
return state.set({
isFetching: true,
didInvalidate: false
});
case RECEIVE_POSTS:
return state.set({
isFetching: false,
didInvalidate: false,
items: action.posts
});
default:
return state;
};
};
而且我的容器MapStateToProps:
function mapStateToProps(state) {
const {
posts: isFetching,
posts
} = state.posts;
console.log(state);
...
所以问题是,如何我可以访问我的状态吗? 状态报告的控制台:
我迷路了!帮帮我!
非常感谢!它“工作”,除了我有这个错误: 'state.set'不是一个函数,从这些行: 'return state.set({...'你有什么想法? –
Nevermind,as我所有的状态都没有使用不可变但我认为它在呈现页面时失去了它的Map状态 –