ホームページ  >  記事  >  ウェブフロントエンド  >  値を変更するときに反応の usestate がレンダリングされない場合はどうすればよいですか?

値を変更するときに反応の usestate がレンダリングされない場合はどうすればよいですか?

WBOY
WBOYオリジナル
2022-04-29 17:48:592770ブラウズ

方法: 1. "const [arr, setArr]=useState([change value])" を使用して State 値を変更します; 2. 新しい配列を作成し、元の配列の値を新しい配列に割り当てますそして、「setState (新しい配列)」を使用して状態を変更し、スタック内の元の配列が指すアドレスを変更します。

値を変更するときに反応の usestate がレンダリングされない場合はどうすればよいですか?

このチュートリアルの動作環境: Windows 10 システム、react17.0.1 バージョン、Dell G3 コンピューター。

React の usestate が値の変更時にレンダリングされない場合はどうすればよいですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。