React utilise l'architecture Flux et il est dit dans https://reactjs.org/docs/thinking-in-react.html que React a deux modèles - state
et props
. Et il y a quelques suggestions pour la gestion des modèles dans React https://reactjs.org/community/model-management.html - mais tout cela semble à quelques couches supplémentaires pour améliorer le Flux.Les grandes questions auxquelles je cherche les réponses sont:
state/props
2) définir les attributs de Client comme les attributs de state.customer/props.customer
; 3) définissez un modèle/classe JavaScript Customer
séparément et dites simplement que state.customer/props.customer
est de type Customer
et ne répète pas les attributs dans le state/props
. Je pense que 3) est la bonne approche, n'est-ce pas?Customer
et comment puis-je définir ce state.customer/props.customer
est de ce modèle? Je pourrais utiliser ces modèles dans certaines sérialisations, certaines tâches de validation de modèles et je pourrais également les utiliser dans le projet ReactNative.La manière la plus élémentaire est indiquée dans l'extrait de code suivant:
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 />
</>
)
);
L'endroit où vous définissez ces accessoires dépend de l'endroit où vous en avez besoin. Si un seul composant a besoin des accessoires, vous les définissez dans cet état de composants. Mais souvent, vous avez besoin des accessoires dans plusieurs composants, donc vous soulevez-les dans votre hiérarchie . Cela se traduit souvent par un composant très "intelligent" (un composant qui a un grand état).
Si votre application devient volumineuse et déroutante, je vous suggère de stocker votre état en externe. Pour ce faire, vous pouvez utiliser réagir au contexte . Il vous permet d'injecter des accessoires aux composants qui en ont besoin, plutôt que de passer plusieurs couches dans votre hiérarchie.
Si vous ne voulez pas écrire votre propre contexte, vous pouvez utiliser des solutions de gestion d'état comme redux ou mobx . Ils utilisent également le contexte, mais fournissent des fonctions pratiques pour connecter facilement un composant à votre état externe.