質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

526閲覧

Reduxの@connectについて

Oskata

総合スコア14

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/08/15 02:27

React.jsでReduxとストア接続する際に使用する@connectについて
いまいちが理解できないため質問をさせていただきます。

@connect(({ app }) => { return { hoge: app.hoge }; })

上記記述の場合
自分の解釈では、パフォーマンスの観点からむやみにpropsとストアが連携するのを避けるために
@connectを使用してpropsを制限している、と言う認識なのですが、この認識はあってますでしょうか。

初学者のため、認識が大きくずれていた場合等、ご指摘いただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分の解釈を記載します。

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の第一、第二引数であるmapStateToPropsmapDispatchToProps で定義します。

mapStateToPropsはReduxの変更されたStore(new State)からコンポーネントへどのようなpropsを渡すかを定義するものと、私は理解しています。

投稿2018/08/15 10:35

編集2018/08/15 10:39
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Oskata

2018/08/16 01:09

非常にわかり安いご回答でした。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問