我想避免在redux状态下多次保存相同的数据,但不知道该怎么做。
我正在开发搜索用户界面
我发送给服务器的搜索查询包括查询字符串,过滤器和排序首选项。
从概念上讲,它们都是搜索参数,我希望将它们保存在redux store中的searchParams
状态。
但是,由于其他原因,部分数据已经存在于redux商店中
例如,我保持viewSettings
状态,我控制哪些字段显示在搜索结果中,而某些过滤器(也在searchParams
中)包含在viewSettings
这就像数据库规范化,你如何规范(?)你的redux商店中的数据?
答案 0 :(得分:0)
您可以通过这样做检查对象是否具有相同的值,或许在您的情况下检查searchParams就足够了。
import isEqual from 'lodash/isEqual';
import { YOUR_ACTION } from '../actions/ActionTypes';
export default function (state = {}, action) {
switch (action.type) {
case YOUR_ACTION:
if(!isEqual(state.key), action.payload){
return state
.set(key, action.payload);
}
return state;
default:
return state;
}
}
答案 1 :(得分:0)
当您调用reducer以在商店中设置数据时,您需要规范化商店数据结构。使用normalir npm或者你可以使用函数式编程(map,set,filter或reducer函数)来标准化你的商店。