teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

詳しく書きました。

2021/02/23 04:54

投稿

mentanpinsan
mentanpinsan

スコア23

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
  useEffect(() => {
21
- setState([{id: 2, name: "tim"}, ...arr])
21
+ setState([{id: 0, name: "tam"}, ...arr])
22
22
  },[])
23
23
 
24
24
  console.log(state);
@@ -42,24 +42,28 @@
42
42
  ```
43
43
  ### 試したこと
44
44
 
45
+ これはuseEffectがレンダリング後に実行されるためにレンダリング時に
45
46
  ```
46
- <p>{state[1].name}</p>
47
+ state[1].name
47
-
48
48
  ```
49
- 上記の箇所をコメントアウトするエラーはません。
49
+ に値が入っていないからだ思うのすが
50
50
 
51
- はじめに
52
51
  ```
52
+ <div>
53
+ <p>{state[0].name}</p>
54
+ <p>{state[1].name}</p>
53
- console.log(state);
55
+ </div>
54
56
  ```
55
- がレンダリング前に実行されて
57
+ の部分を
56
58
 
57
59
  ```
60
+ <ul>
61
+ {state.map(el => (
58
- 0: {id: 0, name: "init"}
62
+ <li>{el.name}</li>
59
- length: 1
63
+ ))}
60
- __proto__: Array(0)
64
+ </ul>
61
65
  ```
62
- が返ってきて初回レンダリング後にsetStateが実行されて、state更新があったの再描画されるまえにも一度
66
+ に変更すると問題なくレンダリングされは何故しょか?
63
67
 
64
68
 
65
69
 

1

詳しく書きました。

2021/02/23 04:54

投稿

mentanpinsan
mentanpinsan

スコア23

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 初回レンダリング時にstateレンダリングしたい。
3
+ 初回レンダリング時のuseEffectの作用理解したい。
4
4
 
5
5
 
6
6