Si vous êtes nouveau dans React Native ou React, vous avez rencontré les mots state et props. Comprendre ces deux éléments est essentiel pour développer des applications mobiles dynamiques et adaptables. Nous approfondirons l'état et les accessoires dans cet article de blog, examinerons leurs différences et apprendrons comment gérer efficacement le flux de données dans votre application React Native.
State est un objet intégré qui permet aux composants de créer et de gérer leurs propres données. Il contient des informations qui peuvent changer au cours du cycle de vie du composant. Chaque fois que l'état change, le composant s'affiche à nouveau pour refléter ces changements.
Props, abréviation de propriétés, sont des composants en lecture seule. Ce sont des paramètres externes transmis à un composant, de la même manière que les arguments sont transmis à une fonction.
Fonctionnalité | État | Accessoires |
---|---|---|
Mutabilité | Mutable (peut changer avec le temps) | Immuable (lecture seule) |
Portée | Local du composant | Transmis des composants parent aux composants enfants |
But | Gère les données qui changent au fil du temps | Configure les composants avec des données externes |
Mises à jour | Les déclencheurs sont restitués une fois mis à jour | Ne déclenche pas le nouveau rendu en cas de modification dans le parent |
Comprendre quand utiliser l'état et quand utiliser les accessoires est essentiel pour gérer le flux de données dans votre application.
Une gestion efficace des flux de données garantit que votre application se comporte de manière prévisible et est plus facile à déboguer et à maintenir.
React Native utilise un flux de données unidirectionnel. Les données sont déplacées des composants parent vers les composants enfants via des accessoires. Cela rend le flux de données plus facile à comprendre et à déboguer.
Lorsque plusieurs composants doivent accéder au même élément de données, il est préférable d'élever l'état à l'ancêtre commun le plus proche. De cette façon, l'état partagé peut être transmis via des accessoires.
Pour permettre aux composants enfants de communiquer avec les composants parents, vous pouvez transmettre des fonctions (rappels) en tant qu'accessoires. Le composant enfant peut ensuite appeler cette fonction pour renvoyer les données au parent.
Regardons quelques exemples de code pour illustrer ces concepts.
Composant parent (App.js) :
import React from 'react'; import { View } from 'react-native'; import Greeting from './Greeting'; const App = () => { return (); }; export default App;
Composant enfant (Greeting.js) :
import React from 'react'; import { Text } from 'react-native'; const Greeting = (props) => { returnHello {props.name} ; }; export default Greeting;
Explication:
Composant Compteur (Counter.js) :
import React, { useState } from 'react'; import { View, Button, Text } from 'react-native'; const Counter = () => { const [count, setCount] = useState(0); return (); }; export default Counter; You clicked {count} times
Explication:
Composant parent (TemperatureConverter.js) :
import React, { useState } from 'react'; import { View } from 'react-native'; import TemperatureInput from './TemperatureInput'; const toCelsius = (fahrenheit) => ((fahrenheit - 32) * 5) / 9; const toFahrenheit = (celsius) => (celsius * 9) / 5 32; const TemperatureConverter = () => { const [temperature, setTemperature] = useState(''); const [scale, setScale] = useState('c'); const handleCelsiusChange = (temp) => { setScale('c'); setTemperature(temp); }; const handleFahrenheitChange = (temp) => { setScale('f'); setTemperature(temp); }; const celsius = scale === 'f' ? toCelsius(parseFloat(temperature)) : temperature; const fahrenheit = scale === 'c' ? toFahrenheit(parseFloat(temperature)) : temperature; return (); }; export default TemperatureConverter;
Composant enfant (TemperatureInput.js) :
import React from 'react'; import { TextInput, Text } from 'react-native'; const scaleNames = { c: 'Celsius', f: 'Fahrenheit', }; const TemperatureInput = ({ scale, temperature, onTemperatureChange }) => { return (Enter temperature in {scaleNames[scale]}: > ); }; export default TemperatureInput;
Explication:
Les composants sans état sont plus faciles à tester et à déboguer. Utilisez des accessoires pour leur transmettre des données.
Utilisez l'état uniquement lorsque cela est nécessaire. Trop de composants avec état peuvent rendre votre application plus difficile à gérer.
Ne modifiez jamais l'état directement. Utilisez toujours setState ou la fonction de mise à jour de useState.
Utilisez PropTypes pour documenter les types de propriétés prévus transmis aux composants.
import PropTypes from 'prop-types'; Greeting.propTypes = { name: PropTypes.string.isRequired, };
Pour les données qui doivent être accessibles par de nombreux composants à différents niveaux d'imbrication, envisagez d'utiliser l'API Context.
// Incorrect this.state.count = this.state.count 1; // Correct this.setState({ count: this.state.count 1 });
Les composants enfants ne doivent pas essayer de modifier directement les accessoires ou l'état parent. Utilisez les rappels.
Comprendre et gérer efficacement l'état et les accessoires est essentiel pour tout développeur React Native. En maîtrisant ces concepts, vous serez en mesure de créer des applications non seulement fonctionnelles, mais également propres, efficaces et maintenables.
Souviens-toi:
Prenez le temps de mettre en pratique ces concepts dans vos projets et vous constaterez une amélioration significative de votre flux de travail de développement.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3