我已经读到“在化简器中调度动作是一种反模式” (Can I dispatch an action in reducer?),但是具有递归化简器也是反模式吗?
Reducer不仅仅是返回新状态的函数吗?据我了解,“调度”只是以状态和动作作为参数来调用化简器。如果我在reducer内称为reducer,那与在reducer内这样反模式进行调度一样吗?
我们来看下面的例子。我有一个带有条件渲染的表单。
状态具有以下接口:
MQL4
其中values是存储所有值的对象,而conditionalRenderings是存储与条件渲染有关的所有对象的obj。 conditionalsByFormElementId是一个对象,该对象描述表单元素值的更新如何影响其他表单元素的呈现。条件可以是例如字符串的最大长度,或匹配某些正则表达式。
所以减速器是这样的:
interface FormState{
values:{
[formElementId]: string | undefined
},
conditionalRenderings: {
conditionalsByFormElementId:{
[formElementId: string]: {
renderIf: RenderCondition,
affectedFormElementId: string
}
}
shouldRender:{
[formElementId]: boolean
}
}
}
如果调用reducer是反模式的,我应该如何解决此问题?