用localStorage数据更新reducer初始状态是一种好的做法吗

is Updating reducer initial state with localStorage data a good practice?

本文关键字:一种 更新 数据 localStorage reducer 初始状态      更新时间:2023-09-26

我有一个初始状态的减速器,运行良好。

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

相关文章: