我正在构建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
有更好的方法吗?谢谢!