回答編集履歴

2

追記

2020/05/27 20:47

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -31,6 +31,22 @@
31
31
  console.log('Update state: ' + hoge)
32
32
 
33
33
  }
34
+
35
+
36
+
37
+ return (
38
+
39
+ <div>
40
+
41
+ <h1>SignUp</h1>
42
+
43
+ + <p>Auth name: {hoge}</p>
44
+
45
+ <button onClick={handleSubmit}>Google Sign-up</button>
46
+
47
+ </div>
48
+
49
+ )
34
50
 
35
51
  ```
36
52
 
@@ -79,3 +95,49 @@
79
95
  });
80
96
 
81
97
  ```
98
+
99
+
100
+
101
+ ---
102
+
103
+
104
+
105
+ ついでなので、createSlice が何をしているか、自分の推測したことを書いておきます。
106
+
107
+
108
+
109
+ ```js
110
+
111
+ const slice = createSlice({
112
+
113
+ name: 'auth',
114
+
115
+ initialState,
116
+
117
+ reducers: {
118
+
119
+ googleSignup(state: State, action: PayloadAction<string>) {
120
+
121
+ console.log('Action:', action)
122
+
123
+ return { ...state, name: action.payload };
124
+
125
+ }
126
+
127
+ }
128
+
129
+ });
130
+
131
+ ```
132
+
133
+
134
+
135
+ 戻り値 slice は actions と reducer を持ち、
136
+
137
+
138
+
139
+ - slice.actions は reducers で指定された各 reducer に対応する action creator の集まりで、reducer の action の型を PayloadAction<T> にすると、対応する action creator の引数の型は T で、戻り値 (生成される action) の型は { type: string, payload: T } になる。また、action の type は createSlice に渡した name + '/' + reducer の名前 (上記の例では 'auth/googleSignup') になるっぽい。
140
+
141
+
142
+
143
+ - slice.reducer は reducers をまとめたもので、state の初期値として initialState を返し、type が createSlice に渡した name + '/' + reducer の名前だったら各 reducer を呼び出すものと思われます。(このため、一つの action type で複数の reducer を反応させることはできない気がします。)

1

誤字の修正

2020/05/27 20:47

投稿

hoshi-takanori
hoshi-takanori

スコア7895

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  + googleSignup(state: State, action: PayloadAction<string>) {
70
70
 
71
- + console.log('Action:' + action.payload)
71
+ + console.log('Action:', action)
72
72
 
73
73
  + return { ...state, name: action.payload };
74
74