如何为无限嵌套结构构建高效的反应组件?

时间:2015-12-02 13:15:25

标签: reactjs nested components redux immutable.js

我正在构建filter builder(Redux)的react组件,filter是一个可以无限嵌套的对象:

{
  "logic": "AND",
  "filters": [
    {
      "field": "name",
      "operator": "EQ",
      "value": "tom"
    },
    {
      "field": "clientVersion",
      "operator": "EQ",
      "value": "1"
    },
    {
      "logic": "OR",
      "filters": [
        {
          "field": "documentCount",
          "operator": "EQ",
          "value": "2"
        },
        {
          "logic": "AND",
          "filters": [
            {
              "field": "error",
              "operator": "NEQ",
              "value": "falses"
            }
          ]
        }        
      ]
    }
  ]
}

我的解决方案1是使用immutable.js并传递'path'道具。嵌套组件中的任何更改都将调度操作,而在reducer中,immutable.js将根据路径转换状态。 问题是因为'path'是在渲染期间生成的,浅等于将始终返回false。将重新呈现所有组件。 code

解决方案2传递组合动作功能。问题是相同的,因为在顶层,mapDispatchToProps将始终生成新函数。 code

有更好的方法吗?谢谢!

0 个答案:

没有答案