自分の解釈を記載します。
connectとは何か?
connectはreduxというライブラリではなく、react-reduxというライブラリのAPIです。
react-redux API: connect
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
「パフォーマンスの観点から@connectを使用してpropsを制限している」のか?
@connectについていまいちが理解できないため
connect関数自体より、connect関数の第一引数 mapStateToProps
({ app }) => { return { hoge: app.hoge}; }
の役割に疑問を持っていらっしゃるのかなと解釈して回答します。
[mapStateToProps(state, [ownProps]): stateProps] (Function):
If this argument is specified, the new component will subscribe to Redux store updates.
この引数が与えられたとき、コンポーネントはReduxのStoreの更新をsubscribeします。
This means that any time the store is updated, mapStateToProps will be called.
つまりStoreが更新されるたびにmapStateToPropsが呼び出されることを意味します。
The results of mapStateToProps must be a plain object, which will be merged into the component’s props.
mapStateToPropsの返り値はプレーンなオブジェクトである必要があり、コンポーネントのpropsへ引き渡されます。
If you don't want to subscribe to store updates, pass null or undefined in place of mapStateToProps.
もしStoreの更新をsubscribeしたくなければ、mapStateToPropsにnullかundefinedを与えてください。
パフォーマンスの観点からむやみにpropsとストアが連携するのを避けるために@connectを使用してpropsを制限している
以上から上記の解釈はちょっと違うかなと思います。そもそも「連携するのを避ける」ならばconnectもmapStateToPropsも使用しないほうが良いので。
mapStateToPropsの役割
https://cdn-images-1.medium.com/max/1600/1*87dJ5EB3ydD7_AbhKb4UOQ.png
connectを使用するとReduxのStoreが変更された際に、コンポーネントがその変更を監視するようになります。実際に変更があった際に何をするのかはconnectの第一、第二引数であるmapStateToProps
と mapDispatchToProps
で定義します。
mapStateToPropsはReduxの変更されたStore(new State)からコンポーネントへどのようなpropsを渡すかを定義するものと、私は理解しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/16 01:09