我々が「dispatchに渡したいもの」は何なのか
我々が「dispatchに渡したいもの」は何なのか
dispatchに渡したいもの
言い換えれば、なんらかの行動、アクション
(reduxのactionじゃなくて一般名詞のアクション)
fluxにおいては、古いstateから新しいstateを返すことを意味するはず
じゃあそのままそういう関数を書けばいいじゃん
https://gyazo.com/be2dfd2fe0469738b882382d6c521ad5
こういう図がある
俺たちがやりたいことはこれ
だからこれをそのまま関数として書いて、dispatchに渡そうぜ
こういうAPIになってればいい
const addTodo = (newTodo) => (state) => ({...state, todos: [...state.todos, newTodo] })
こういう関数を用意して
dispatch( addTask({desc:'hello'}) )すればいい
table:対応
actionのtype 関数名
payloadやその他の属性 引数
reducer内の対応する文 関数の中身
と考えられるはずで、
そもそもプログラミング言語が持っている関数という仕組みで実装するほうが素直であるように思う
そう考えれば、上のようなAPIは自然に思える
まあでもparam => state => stateみたいな形は慣れないと難しい
でもそれはreduxも複雑だしredux使うときも出てきた気がするからイーブンだべ