React使用Flux架构,在https://reactjs.org/docs/thinking-in-react.html中说React有两个模型-state
和props
。在React https://reactjs.org/community/model-management.html中有一些关于模型管理的建议-但所有这些似乎都是一些额外的层来增强Flux。我正在寻求答案的大问题是:
- 我应该在React中定义模型类吗?也就是说,如果我有Customer类的概念,那么我可以:1)将Customer的属性直接定义为
state/props
的属性; 2)将Customer的属性定义为state.customer/props.customer
的属性; 3)单独定义一些JavaScript模板/类Customer
,简单地说,state.customer/props.customer
是Customer
类型,并且不要在state/props
中重复属性。我觉得这是正确的做法,不是吗? - 如果第三个选项(上一点)是正确的方法,那么我如何定义
Customer
模板,以及如何定义state.customer/props.customer
属于此模板?我可以在一些序列化,一些模型验证任务中使用这些模板,我也可以在ReactNative项目中使用。
1条答案
按热度按时间zc0qhyus1#
最基本的方法如以下代码片段所示:
定义这些 prop 的位置取决于需要它们的位置。如果只有一个组件需要props,则在该组件状态中定义它们。但通常你需要的 prop 在几个组成部分,所以你lift them in your hierarchy up。这通常会导致一个非常“智能”的组件(一个状态很大的组件)。
如果你的应用程序变得很大并且令人困惑,我建议你在外部存储你的状态。要做到这一点,您可以使用react context。它允许您将prop注入到需要它的组件中,而不是在层次结构中向下传递几层。
如果你不想写自己的上下文,你可以使用像redux或mobx这样的状态管理解决方案。它们也使用上下文,但提供了方便的函数来轻松地将组件连接到外部状态。