Es ist üblich, Zustände zu verwenden, um verschiedene Teile der Schnittstelle zu steuern. Wenn sie jedoch nicht richtig verwaltet werden, können mehrere Zustände zu unnötigen erneuten Renderings führen und die Systemleistung beeinträchtigen.
Stellen wir uns vor, wir hätten eine Komponente, die die Daten eines Benutzers verwaltet. Wir können diese Zustände unabhängig voneinander deklarieren, etwa so:
const UserComponent = () => { const [name, setName] = useState(''); const [age, setAge] = useState(0); const [address, setAddress] = useState(''); const [email, setEmail] = useState(''); const [phone, setPhone] = useState(''); const [occupation, setOccupation] = useState(''); // Funções de atualização dos estados const updateName = (newName) => setName(newName); const updateAge = (newAge) => setAge(newAge); // e assim por diante... return ( ... ); };
Hier haben wir 6 unabhängige Zustände. Jedes Mal, wenn einer dieser Zustände aktualisiert wird, wird die gesamte -Komponente neu gerendert. Stellen Sie sich nun vor, wir müssen die 6 Zustände aktualisieren ... ja, wir rendern diese Komponente 6 Mal.
Eine Möglichkeit, dieses Problem zu mildern, besteht darin, alle Zustände in einem einzigen Objekt zu konsolidieren. Anstatt separate Zustände zu haben, können wir alle Benutzerinformationen in einem Zustand behalten, das würde so aussehen:
const UserComponent = () => { const [user, setUser] = useState({ name: '', age: 0, address: '', email: '', phone: '', occupation: '' }); // Função para atualizar o estado do usuário const updateUser = (newData) => { setUser((prevState) => ({ ...prevUser, ...newData, })); }; return ( ... ); };
Anstelle einer Funktion für jeden Status haben wir jetzt die Funktion updateUser, die nur die gewünschten Änderungen empfängt und diese mithilfe des Spread-Operators (...) mit dem vorherigen Status kombiniert. Dadurch können Sie nur einen Teil des Status aktualisieren, während der Rest unverändert bleibt.
Wenn Sie nur eine Information über das Objekt ändern möchten, gehen Sie wie folgt vor:
setUser((prevState) => ({...prevState, age: 25}))
Wenn wir separate Zustände verwenden, führt jede einzelne Zustandsänderung zu einem erneuten Rendern der Komponente. Wenn wir alle Zustände in einem einzigen Objekt konsolidieren, müssen wir immer noch ein einziges erneutes Rendern durchführen, das jedoch nur einmal erfolgt, selbst wenn sich mehrere Teile des Objekts ändern.
- Reduzierung von erneuten Renderings: Durch die Konsolidierung von Zuständen vermeiden wir mehrere unnötige erneute Renderings und verbessern so die Leistung.
– Einfachere Wartung: Es ist einfacher, Benutzerinformationen in einem einzigen Status zu verwalten, wodurch der Code vereinfacht und besser lesbar gemacht wird.
– Teilweise kontrollierte Aktualisierungen: Wir können nur die Teile des Status ändern, die geändert werden müssen, ohne den Rest zu ändern.
Und das! Ich hoffe, ich habe geholfen!!!
Ich bin zwar noch in der Entwicklung, aber hier ist mein Portfolio: https://lucaslima.vercel.app (Ich hoffe, dass es fertig ist, wenn Sie darauf zugreifen, hahhaha)
Erfolg! ?
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3