【问题标题】:Redux, store same value more than onceRedux,多次存储相同的值
【发布时间】:2017-03-11 15:44:02
【问题描述】:

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

我正在开发搜索用户界面

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

从概念上讲,它们都是搜索参数,我想在 redux 商店中将它们保持在 searchParams 状态。

但是,由于另一个原因,一些数据已经在 redux 存储中。
例如,我维护viewSettings 状态,在该状态中我控制在搜索结果中显示哪些字段,并且一些过滤器(也在searchParams 中)包含在viewSettings

这就像 DB 规范化,你如何规范化(?)你的 redux 存储中的数据?

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

    您可以通过这样做来检查对象是否具有相同的值,也许在您的情况下检查 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;
      }
    }
    

    【讨论】:

      【解决方案2】:

      当您调用 reducer 来设置商店中的数据时,您需要规范化您的商店数据结构。使用normalir npm 或者您可以使用函数式编程(map、set、filter 或 reducer 函数)来规范您的 store。

      【讨论】:

        猜你喜欢
        • 2016-08-13
        • 2023-01-25
        • 2019-03-19
        • 1970-01-01
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 2014-08-18
        • 2016-09-24
        相关资源
        最近更新 更多