Redux,多次存储相同的值

时间:2017-03-11 15:44:02

标签: reactjs redux

我想避免在redux状态下多次保存相同的数据,但不知道该怎么做。

我正在开发搜索用户界面

我发送给服务器的搜索查询包括查询字符串,过滤器和排序首选项。

从概念上讲,它们都是搜索参数,我希望将它们保存在redux store中的searchParams状态。

但是,由于其他原因,部分数据已经存在于redux商店中 例如,我保持viewSettings状态,我控制哪些字段显示在搜索结果中,而某些过滤器(也在searchParams中)包含在viewSettings

这就像数据库规范化,你如何规范(?)你的redux商店中的数据?

2 个答案:

答案 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函数)来标准化你的商店。