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

質問編集履歴

1

文章の修正

2020/09/11 00:18

投稿

Toshiyuki023
Toshiyuki023

スコア3

title CHANGED
File without changes
body CHANGED
@@ -272,11 +272,11 @@
272
272
  `actions`内で、ストアからの`uid`取得を待ち、`uid`を取得した後に`uid`を引数とする`authSuccess`をdispatchしたいです。
273
273
 
274
274
  # 問題点
275
- **actionの一つ`authCheckState`内における`dispatch(authSuccess(token, uid))`で`uid`が取得されないまま処理が進んでしまうことで、`uid`が`null`になり、結果、action`authSuccess`によって`state`が`uid : null`に書き換えられてしまう。**
275
+ **actionの一つ`authCheckState`内における`dispatch(authSuccess(token, uid))`で`uid`が取得されないまま処理が進んでしまうことで、`uid`が`null`になり、結果、action`authSuccess`によって`state`が`uid : null`に書き換えられてしまうことです。**
276
276
 
277
277
  最終的に私が行いたいのは、`uid`をログインしているユーザーのものにすることです。
278
278
  ログイン時、または、新規登録時に`uid`を更新することには成功しているのですが(action`authSignup`, `authLogin`参照)、画面遷移を行うと`uid`が`null`に上書きされてしまいます。
279
- 原因は、`App.jsx`内で`authCheckState`がdispatchされた時に、`uid`が`null`へ変わってしまうために起きていると私は考察しています。
279
+ 原因は、`App.jsx`内で`authCheckState`がdispatchされた時に、`authSuccess`の引数の一つである`uid`が、ログイン済みユーザーのIDを持たないままdispatchされたことにより、`state` の`uid`が`null`へ変わってしまうために起きていると私は考察しています。
280
280
 
281
281
  解決法として、`authCheckState`内で`store`から`uid`を取得してきて、それを`authSuccess`の引数に入れるということを思いつき、`async/await`で実装をしてみました。しかし、依然として`uid`は`null`のままだったため、`store.getState()`の処理の完了が待たれずに`authSuccess`が実行されている様に思われます。
282
282