redux一瞬詰まったので

Error: Reducer "test" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.

っていうエラー文、よくわかんなくて詰まってた。
エラー「Reducer returned undefined during initialization」(React/Redux)
これ見て解決。
Reducerでdefaultの場合の設定をしてなかったのがあかんかったみたい。普通にstateをreturnで解決。

Could not find "store" in the context of "Connect(App)". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to Connect(App) in connect options

にも詰まった。直訳すれば「Connenctされてるけど、AppコンポーネントにstoreがみつからなかったからProviderでラップしてstoreを教えてくれ」みたいなかんじなんだけど、おかしい。確かにAppコンポーネントをProviderでラップしてるしstoreも明示してる。
reactjs - ルートがプロバイダーでラップされている場合でも、「ストア」が見つかりませんでした - 初心者向けチュートリアル
これで解決。render内のをそのままProviderでラップしても読みこまれないっぽい。だからこそPresentationalコンポーネントとContainerコンポーネントを分けていくのがいいんやろうなって認識した。

そういえば色々Reduxわかってきた。いいかんじ。やっぱ俺やればできるわwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

あとこれも詰まった。イベントが起こるたびに状態の真偽値を切り替えたかった。
ReactでsetStateするなら

this.setState({ switch: !this.state.switch })

で済むかんじ。

そんでこれをReducerでやろうとしてこう書いたら

case SWITCH_STATE:
      return !state.switch

エラー。というより一度だけ真偽値を切り替えてあとは動かない。

どうやら「Reducerは常に不変性を保たなければならない」ってやつができてないみたい。ただの切り替えもだめなのか......
ということで書きなおした。

 case SWITCH_STATE:
      return {switch: !state.switch }

これでイケた。stateが複数ある場合はもちろん「不変性を保つ」必要があるので気つけなくちゃいけない。それ用のライブラリとか使えばいいのかな(immutableJSとか)
reactjs - How can I toggle property in reducer? - Stack Overflow
これ見て解決した。

f:id:ten0313:20200103220040j:plain
異人館行った。三が日やからか知らんけど、ラインの館以外入れなかったっぽい。
時間が6時過ぎくらいやったからかな?
f:id:ten0313:20200103220025j:plain
生田通りにある小籠包食べた。ここは美味しいので度々行く。ここのハイボールがなぞにエタノール臭くてあんま好きくなかった。