我正在构建一个 Redux 应用程序(我的第一个),并且不太清楚操作之间的耦合程度是适当的。
我的应用程序有多个表单,其值在 url 中序列化。
例如,有一个用于特定搜索的输入字段,并且在键入时更新 url 参数。还有其他几个输入字段遵循此模式。
在我的顶级 index.js
中,我有几个如下所示的代码块:
// Within the declaration of a high-level component
onForm1Change={(key, value) => {
// Listened to by "formValues" state cross-section reducer
store.dispatch({
type: actions.FORM1_CHANGE,
key: key,
value: value
});
// Listened to by "url" state cross-section reducer, leads to a url param update.
// Has it's own logic that is based upon the formValues state.
// Must run after FORM1_CHANGE finishes
store.dispatch({
type: actions.UPDATE_URL,
formValues: store.getState().formValues
});
}
}
像 UPDATE_URL
这样的操作感觉不太对劲。此操作并不是独立存在的...它依赖于首先调度的其他操作。
Action 之间的这种耦合是代码味道吗?是否有任何常用技术来解耦/重构这些操作?
最佳答案
我认为这是链接同步操作的完全正确的方式。您还可以使用像redux-thunk这样的中间件为此目的,使其更易于阅读(因为您将把操作调度程序函数存储为操作创建器)。这是一些article关于这个话题。
关于reactjs - Redux 操作取决于/耦合到其他操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44252077/