React)ステータス値の変更(複数の値を一度に変更)
2789 ワード
useState
最初のレンダリングでは、反応はすべてのjsxコンポーネントを1回読み込みますが、読み込み後、データ(or value)の変更によって再レンダリングされることはありません.
Reactionの場合、再レンダリングしない限り、値が変更されたことを知らないため更新されません.では、stateの値を更新するためにReactionを再レンダリングするにはどうすればいいですか?
USStateという名前のhookを使う
プレイヤーの使用インタフェースに反映されたデータが流れている場合は、一般的な変数ではstateを変更できないため、stateが必要です.ただし、値を作成および変更できます.これらの値が変更されると、反応器はstateに入力された素子だけを再読み込みします.(他の構成部品は変更または再レンダリングされません)
stateをuseState hookで置き換えると(入力しようとする)、常に2つの値(values)が伴います.
state: value itself
およびsetState : value updating function(update whenever the State should change)
.(stateは名前にかかわらず初期名にすぎません!)
最初の要素:JSXコードに表示されるstate値.例)
<h2>{title}</h2>
かっこにのみ書かれている場合、残りの部分は、リアクターがステータスの変化を知っているときに構成部品を再レンダリングし、jSXコードを再評価します.1つの構成部品が複数のstateに関連している場合?
1.Multi-state approach
const [enteredTitle,setEnteredTitle] = useState("");
const [enteredAmount,setEnteredAmount] = useState("");
const [enteredDate,setEnteredDate] = useState("");
-------------------- state 사용힐때 -------------------------
const titleChangeHandler = (event) => {
setEnteredTitle(event.target.value);};
const amountChangeHandler = (e)=> {
setEnteredAmount(e.target.value);};
const dateChangeHandler = (e)=> {
setEnteredDate(e.target.value);};
=>state valueすべて個別に書き込むconst [userInput,setUserInput]= useState({
enteredTitle:"",
enteredAmount:"",
enteredDate:"",
});
-------------------- state 사용할때 -------------------------
const titleChangeHandler = (e) => {
setUserInput({...userInput, enteredTitle: e.target.value});
};
const amountChangeHandler = (e)=> {
setUserInput({...userInput,enteredAmount: e.target.value,});
};
const dateChangeHandler = (e)=> {
setUserInput({...userInput,enteredDate: e.target.value,});
};
1番と2番は同じことを言う2番のように使うときに注意したい点)複数のstateを同時に処理するので、1つのstate値を変更するときは、残りのstate値を失わないようにコピーして一緒に書く必要があります.つまり、以前の状態にすでに存在していた値をコピーし(スプレッドシート構文で元の値を書きます)、残りの変更した状態値を更新して上書きします.
3.2番より良い方法(Prestateで管理!)
より良い方法の理由:返事はstateの変更によってすぐに更新されません.理論的には、2つ目の方法を使用して大量のstate値を同時に更新すると、state値は以前の不正なstate値更新=>精度から低下する可能性があります.
したがって、第3の方法を使用すると、状態値の更新時に内部関数(presState)=>{})presStateを使用して、反応器にすべての状態更新計画を常に記憶させ、最新の状態で再び状態を更新することができる.したがって、これはより安全な方法であり、最新のstateで更新しながらstate値を変更することを再確認できます.この関数form((prevState)=>{})は、state値の更新時に以前のstate値の影響を受けた場合に使用できます.
Reference
この問題について(React)ステータス値の変更(複数の値を一度に変更)), 我々は、より多くの情報をここで見つけました https://velog.io/@picapipicca/React-state-값-바꿔주기-한번에-여러값-바꿔주기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol