This是每个人都引用的文章。基本上说所有API调用都应由Container / Smart组件进行,并且数据应传递到Presentational / Dumb组件。
这是我的用例:
假设对话框/模态中有一个窗体(如下所示)。现在,当字段Access Type
发生变化时,Permissions
下拉菜单中的选项也会发生变化,并且从服务器获取了数据。
我的问题是:
1)此对话框是容器还是演示组件?或者换句话说,该组件应该进行API调用以创建新用户,还是应该将其包装在进行API调用的Container组件中?
2)如果您假定此对话框是Presentational组件,那么每次Access Type
更改时,如何进行API调用以获取Permissions
列表?触发事件是唯一的解决方案吗?
3)如果此表单是表示形式的组件,那么当用户单击“提交”按钮时,onSubmitHandler
会做什么:只需向带有表单负载的Container组件触发事件?
答案 0 :(得分:0)
1)我只能凭自己的经验说,并且会说该表单是一个表示性组件,但应该包装在一个处理API调用的容器中。
2)再次,根据我自己的经验,我认为onChange应该只更新组件的内部状态,并在onBlur上发生“提交”事件,因此,当用户更改字段时,将获取权限。
3)onSubmitHandler应该至少执行event.preventDefault()
,这样页面才不会重新加载,然后使用从父容器中获得的回调。