javascript 我应该在React中定义模型类吗?

z2acfund  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(343)

React使用Flux架构,在https://reactjs.org/docs/thinking-in-react.html中说React有两个模型-stateprops。在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.customerCustomer类型,并且不要在state/props中重复属性。我觉得这是正确的做法,不是吗?
  • 如果第三个选项(上一点)是正确的方法,那么我如何定义Customer模板,以及如何定义state.customer/props.customer属于此模板?我可以在一些序列化,一些模型验证任务中使用这些模板,我也可以在ReactNative项目中使用。
zc0qhyus

zc0qhyus1#

最基本的方法如以下代码片段所示:

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 />
      </>
    )
  );

定义这些 prop 的位置取决于需要它们的位置。如果只有一个组件需要props,则在该组件状态中定义它们。但通常你需要的 prop 在几个组成部分,所以你lift them in your hierarchy up。这通常会导致一个非常“智能”的组件(一个状态很大的组件)。
如果你的应用程序变得很大并且令人困惑,我建议你在外部存储你的状态。要做到这一点,您可以使用react context。它允许您将prop注入到需要它的组件中,而不是在层次结构中向下传递几层。
如果你不想写自己的上下文,你可以使用像reduxmobx这样的状态管理解决方案。它们也使用上下文,但提供了方便的函数来轻松地将组件连接到外部状态。

相关问题