用localStorage数据更新reducer初始状态是一种好的做法吗
is Updating reducer initial state with localStorage data a good practice?
我有一个初始状态的减速器,运行良好。
const initialState = [items:{
id: 1,
text: 'Monday',
},
{ id: 1,
text: 'Tuesday',
}];
function dayChaged(state = initialState, change) {
..
}
我的应用程序运行良好。但是,我添加了对本地存储的支持。每当用户添加新项目时,我都希望将其存储在存储器中。当页面刷新/重新加载时,我想将iniTialState设置为iniTialState的值加上localstorage的值。现在我在state/reducer类中添加了这个,但是,我觉得这不是最佳实践。
const storageItems = JSON.parse(localStorage.getItem('items'));
if(storageItems) {
initialState = { todos: initialState.items.concat(storageItems) };
}
function dayChaged(state = initialState, change) {
..
}
它工作得很好,做我想做的事。然而,在我看来,这使减速器复杂化了。请考虑到我的意图,我应该在哪里添加这样的功能anc,我如何在不影响状态可测试性的情况下完全集成它?
首先要考虑的是,您是否真的需要更改还原器的initialState,或者您可能需要的是实际设置整个商店的初始状态(在这种情况下,将忽略单个还原器的初始状态(。
请参阅createStore函数的签名,它接受初始存储状态作为第二个(可选(参数,将您的状态从localStorage传递到那里,您应该是金色的。
https://github.com/reactjs/redux/blob/master/docs/api/createStore.md
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 在scala或scalajs Diode中,现有类型中的任何一种都符合“;更新一个没有'还不存在”;
- 输入文本是't在一种情况下以相同的形式更新与另一种情况相同的角度模型
- 有没有一种方法可以使用ng-options而不使用ng-change来更新两个值?
- 是否有一种方法来更新一个gon(或gem)变量
- 在Redux/Flux中,用于乐观更新的操作存储是一种很好的方法
- 是否有一种松耦合的方式来更新父指令从一个动态创建的视图/控制器,是父指令的一个子
- 是否有一种方式显示/指示从扩展/背景页面更新的选项卡
- 是否有一种方法可以更新或设置字段,就像upsert对文档所做的那样
- 有一种方法,我可以把我最新的facebook状态更新到我的网站
- 有没有一种方法可以让用户在不使用我编写的应用程序的情况下访问公开的facebook信息,比如照片,状态更新
- 用localStorage数据更新reducer初始状态是一种好的做法吗
- 使用JQuery添加另一个字段并更新隐藏字段,只能使用一种方法
- 有没有一种编程方法来知道jQuery的DOM更新何时完成