我应该定义模型 类 吗?
Should I define model classes?
React 使用 Flux 架构,在 https://reactjs.org/docs/thinking-in-react.html that React has two models - state
and props
. And there are some suggestions for model management in React https://reactjs.org/community/model-management.html 中有说明 - 但所有这些似乎都需要一些额外的层来增强 Flux。我正在寻求答案的主要问题是:
- 我应该在 React 中定义模型 classes 吗? IE。如果我有Customerclass的概念,那么我可以: 1)直接将Customer的属性定义为
state/props
的属性 2)将Customer的属性定义为state.customer/props.customer
的属性; 3) 分别定义一些 JavaScript template/class Customer
并简单地说, state.customer/props.customer
是 Customer
类型并且不要在 [=13= 中重复属性].我觉得 3) 是正确的方法,不是吗?
- 如果(前一点的)第三个选项是正确的方法,那么我如何定义
Customer
模板以及如何定义 state.customer/props.customer
属于该模板?我可以在一些序列化、一些模型验证任务中使用这些模板,我也可以在 ReactNative 项目中使用。
最基本的方法如下片段所示:
const Customer = ({ name, age }) => (
<div>
<p>Name: {name}</p>
<p>Age: {age}</p>
</div>
);
const App = () =>
[{ name: "Bert", age: 22 }, { name: "Alfons", age: 45 }].map(
({ name, age }, i) => (
<>
<Customer key={i} name={name} age={age} />
<hr />
</>
)
);
在哪里定义这些道具取决于你在哪里需要它们。如果只有一个组件需要道具,您可以在该组件状态下定义它们。但是通常你需要几个组件中的道具,所以你lift them in your hierarchy up。这通常会导致非常 "smart" 的组件(具有大状态的组件)。
如果您的应用变得庞大且混乱,我建议您将状态存储在外部。为此,您可以使用 react context。它允许您将 props 注入到需要它的组件中,而不是在您的层次结构中向下传递几层。
如果您不想编写自己的上下文,您可以使用 redux or mobx 等状态管理解决方案。它们也使用上下文,但提供了方便的功能来轻松地将组件连接到您的外部状态。
React 使用 Flux 架构,在 https://reactjs.org/docs/thinking-in-react.html that React has two models - state
and props
. And there are some suggestions for model management in React https://reactjs.org/community/model-management.html 中有说明 - 但所有这些似乎都需要一些额外的层来增强 Flux。我正在寻求答案的主要问题是:
- 我应该在 React 中定义模型 classes 吗? IE。如果我有Customerclass的概念,那么我可以: 1)直接将Customer的属性定义为
state/props
的属性 2)将Customer的属性定义为state.customer/props.customer
的属性; 3) 分别定义一些 JavaScript template/classCustomer
并简单地说,state.customer/props.customer
是Customer
类型并且不要在 [=13= 中重复属性].我觉得 3) 是正确的方法,不是吗? - 如果(前一点的)第三个选项是正确的方法,那么我如何定义
Customer
模板以及如何定义state.customer/props.customer
属于该模板?我可以在一些序列化、一些模型验证任务中使用这些模板,我也可以在 ReactNative 项目中使用。
最基本的方法如下片段所示:
const Customer = ({ name, age }) => (
<div>
<p>Name: {name}</p>
<p>Age: {age}</p>
</div>
);
const App = () =>
[{ name: "Bert", age: 22 }, { name: "Alfons", age: 45 }].map(
({ name, age }, i) => (
<>
<Customer key={i} name={name} age={age} />
<hr />
</>
)
);
在哪里定义这些道具取决于你在哪里需要它们。如果只有一个组件需要道具,您可以在该组件状态下定义它们。但是通常你需要几个组件中的道具,所以你lift them in your hierarchy up。这通常会导致非常 "smart" 的组件(具有大状态的组件)。
如果您的应用变得庞大且混乱,我建议您将状态存储在外部。为此,您可以使用 react context。它允许您将 props 注入到需要它的组件中,而不是在您的层次结构中向下传递几层。
如果您不想编写自己的上下文,您可以使用 redux or mobx 等状态管理解决方案。它们也使用上下文,但提供了方便的功能来轻松地将组件连接到您的外部状态。