回答編集履歴

2

タイトルにある質問への回答

2023/03/20 09:57

投稿

uky
uky

スコア227

test CHANGED
@@ -1,3 +1,6 @@
1
+ タイトルにあるように処理を待つことはできないような気がします。
2
+ (私も勉強不足で知らないだけな可能性があるので、ご存じの方がいらっしゃればコメントでご指摘いただきたいです
3
+
1
4
  > setTestで値を書き換えた直後にconsole.log(test)としても書き換える以前の値が出力されます。
2
5
  > これはsetTestが非同期処理の為だと思いますが、setTestが実行されたことを確認してからconsole.log(test)を実行する方法をご存じの方は教えていただけませんでしょうか。
3
6
 

1

修正

2023/03/20 09:54

投稿

uky
uky

スコア227

test CHANGED
@@ -1,7 +1,7 @@
1
1
  > setTestで値を書き換えた直後にconsole.log(test)としても書き換える以前の値が出力されます。
2
2
  > これはsetTestが非同期処理の為だと思いますが、setTestが実行されたことを確認してからconsole.log(test)を実行する方法をご存じの方は教えていただけませんでしょうか。
3
3
 
4
- どちらかというと、Reactのstate管理の仕様で、
4
+ どちらかというと、Reactのstate周りの仕様で、
5
5
  stateが更新されてから(setTestが呼ばれてから)次に`test`がレンダリングされるタイミングまでは元々の値を返すような仕様となっているためです。ドキュメント中ではsnapshot的な振る舞いをすると書かれています。
6
6
 
7
7
  そのため、setした直後にconsole.logをしたとしても、値が反映されていないような値が返ってきます。