我有一个初始状态的减速机,工作正常。
const initialState = [items:{
id: 1,
text: 'Monday',
},
{ id: 1,
text: 'Tuesday',
}];
function dayChaged(state = initialState, change) {
..
}
我的应用运行正常。但是,我添加了对本地存储的支持。我想在用户添加新项目时将新项目存储在存储中。当页面刷新/重新加载时,我想将iniTialState设置为iniTialState的值加上localstorage值。目前我在州/减速机课程中添加了这个,但是,我觉得这不是最好的做法。
const storageItems = JSON.parse(localStorage.getItem('items'));
if(storageItems) {
initialState = { todos: initialState.items.concat(storageItems) };
}
function dayChaged(state = initialState, change) {
..
}
它的工作正常,做我想要的。然而,这使减速器复杂化了我的理解。请考虑我的意图,我应该在哪里添加这样的功能,如何在不影响州的可测试性的情况下完全整合它?
答案 0 :(得分:0)
首先考虑一下你是否真的需要改变你的reducer的initialState,或者你需要的是实际设置整个商店的初始状态(在这种情况下你的个人Reducer的初始状态将被忽略)。
查看createStore函数的签名,它接受初始存储状态作为第二个(可选)参数,从localStorage传递你的状态,你应该是金色的。
https://github.com/reactjs/redux/blob/master/docs/api/createStore.md