免责声明:有可能这个问题看起来很愚蠢,因为我可能忽略了文档中任何明显或不言而喻的事情。现在我的reducer-setup看起来像这样:
import editBlogEntryForm from './blog/editBlogEntryForm';
import login from './login'; // <-- a directory with index.js
import blog from './blog'; // <-- a directory with index.js
export default combineReducers({
blog: blog,
login: login,
form: editBlogEntryForm
});
将来我应该在哪里放置其他表格?
了解更多关于分离reducer的信息,我将blog
和login
reducers移动到他们自己的目录/文件中,我使用reducer组合。但似乎我无法移动form
任何地方,它必须保持顶级,这是没有意义的,如果我以后想要引入登录表格左右。我希望我不必将所有内容都放在同一个form-reducer中,从而产生一个非常大的switch语句?
我已经尝试将form: editBlogEntryForm
“向下”移动到blog
缩减器中,但表单会停止工作/更新。
以下是我的容器组件中reduxForm
调用表单:
EditBlogEntryFormContainer = reduxForm({
form: 'EditBlogEntryForm',
validate
})(EditBlogEntryFormContainer);
有人可以指出正确的方向吗?
来自redux-form-docs http://redux-form.com/6.6.3/docs/GettingStarted.md/我得到了这个:
请注意,默认情况下,用于将redux-form reducer传递给的键 combineReducers应该命名为form。虽然有支持 自定义键名称,请参阅getFormState配置以获取更多详细信息。
答案 0 :(得分:1)
感谢@Thijs Steel和他指向我getFormState
的{{1}}道具(参见文档http://redux-form.com/6.6.3/docs/api/ReduxForm.md/),我找到了一个解决方案,它使用详细的表单名称和状态-地点。虽然我仍然无法按照有关reduxForm()
的文档说明:
很少需要此功能,默认为假设 reducer安装在表格键下。
我认为我们的应用程序中都需要多个表单和表单缩减器,因此使用getFormState
似乎是我的标准情况。但是,我仍然不确定,我可能错过了任何明显的事情。
解决方案是使用redux-form更改form-component的连接,如下所示:
getFormState
因此,任何表单都可以从应用程序状态的任何位置获得其状态,从而使多种形式成为可能。
不使用getFormState是默认使用状态顶级的EditBlogEntryFormContainer = reduxForm({
form: 'EditBlogEntryForm',
getFormState: (state) => state.blog.editBlogEntryForm, // <-- your form reducer location
validate
})(EditBlogEntryFormContainer);
- reducer,这会导致:
form
答案 1 :(得分:0)
首先,如果您想在Future中添加另一个表单,可以将其称为form2:...(或其他一些更合适的名称)。
当您向下移动表单时,您是否也使用combinereducers来组合较低级别的表单?如果是这样,请记住要访问状态,您需要执行state.blog.form和state.blog.main