是表示组件还是容器组件

时间:2019-02-11 11:20:19

标签: reactjs vuejs2

This是每个人都引用的文章。基本上说所有API调用都应由Container / Smart组件进行,并且数据应传递到Presentational / Dumb组件。

这是我的用例:

假设对话框/模态中有一个窗体(如下所示)。现在,当字段Access Type发生变化时,Permissions下拉菜单中的选项也会发生变化,并且从服务器获取了数据。Create User dialog box

我的问题是:

1)此对话框是容器还是演示组件?或者换句话说,该组件应该进行API调用以创建新用户,还是应该将其包装在进行API调用的Container组件中?

2)如果您假定此对话框是Presentational组件,那么每次Access Type更改时,如何进行API调用以获取Permissions列表?触发事件是唯一的解决方案吗?

3)如果此表单是表示形式的组件,那么当用户单击“提交”按钮时,onSubmitHandler会做什么:只需向带有表单负载的Container组件触发事件?

1 个答案:

答案 0 :(得分:0)

1)我只能凭自己的经验说,并且会说该表单是一个表示性组件,但应该包装在一个处理API调用的容器中。

2)再次,根据我自己的经验,我认为onChange应该只更新组件的内部状态,并在onBlur上发生“提交”事件,因此,当用户更改字段时,将获取权限。

3)onSubmitHandler应该至少执行event.preventDefault(),这样页面才不会重新加载,然后使用从父容器中获得的回调。