方法: 1. "const [arr, setArr]=useState([change value])" を使用して State 値を変更します; 2. 新しい配列を作成し、元の配列の値を新しい配列に割り当てますそして、「setState (新しい配列)」を使用して状態を変更し、スタック内の元の配列が指すアドレスを変更します。
このチュートリアルの動作環境: Windows 10 システム、react17.0.1 バージョン、Dell G3 コンピューター。
React のデフォルトの浅いモニタリングでは、State 値がオブジェクトの場合、その参照 (アドレス)オブジェクトはスタックに格納されており、setState によって変更されるのはヒープ内のデータです。
したがって、setArr(arr) の後でも、スタック内のアドレスは元のアドレスのままです。React は、アドレスが変更されていないことを検出します。変更されたため、State は変更されていないとみなされるため、ページは再レンダリングされません
解決策
アイデア: 元のアドレスが指すアドレスを変更します。スタック内の arr
#例は次のとおりです。
1) 直接 setState (変更する値)
const [arr, setArr] = useState([]) setArr(1)
2) を作成します。新しい配列 newArr を作成し、元の配列の値を新しい配列に代入し、setState(newArr)
const [arr, setArr] = useState([]) const newArr = arr.slice(1) setArr(newArr)
ES6 を使用する拡張文字
const [arr, setArr] = useState([]) setArr([...arr])
推奨される学習: "react ビデオ チュートリアル"
以上が値を変更するときに反応の usestate がレンダリングされない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。