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

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

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

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

React.js

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

Q&A

解決済

2回答

5638閲覧

react-reduxでconnectしたのにpropsがundefinedになる

yoppy0066

総合スコア293

Redux

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

React.js

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

0グッド

0クリップ

投稿2018/02/11 19:53

containers/App.js

import React, { Component } from 'react'; import { connect } from 'react-redux' import List from '../components/List'; const mapStateToProps = state => { return { todos: state.todo } } class App extends Component { render() { return ( <div className="App"> <List /> </div> ) } } export default connect(mapStateToProps)(App) // 以下のようにすると、List.jsのtodosに値が渡る // const App = connect(mapStateToProps)(List) // export default App

components/List.js

import React, { PropTypes } from 'react' export default ({ todos }) => { console.log(todos); // => undefinedになってしまう }

react-reduxを試しているのですが、上記のような挙動となります。
containerは複数のcomponentをもつものと思っているので、この挙動だとcomponentごとにcontainerを用意する必要が出てきてしまうと思っているのですが、こちらの挙動としては正しいのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

containerは複数のcomponentをもつものと思っているので、この挙動だとcomponentごとにcontainerを用意する必要が出てきてしまうと思っているのですが、こちらの挙動としては正しいのでしょうか?

正しいと思います。 component にプロパティを渡す手段として、

  • container 化して、 store から値を抽出する
  • component 間でプロパティを渡す

のいずれかを選択することになると思います。質問者様の例であれば、後者を選択して、以下のように親コンポーネントからプロパティを渡されれば良いのではないかと思います。

js

1class App extends Component { 2 render() { 3 return ( 4 <div className="App"> 5 <List data="{todos}"/> 6 </div> 7 ) 8 } 9}

投稿2018/02/12 00:48

mit0223

総合スコア3401

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

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

0

connectの役割はpropsにstateの情報を自動で渡すことにして
propsを必要としない新しいコンポーネントを作ることです。
したがって

components/List.js

import { connect } from 'react-redux' const mapStateToProps = state => { return { todos: state.todo } } const List= ({ todos }) => { console.log(todos); // => undefinedになってしまう } export default connect(mapStateToProps)(List)
import React, { Component } from 'react'; import List from '../components/List'; export default class App extends Component { render() { return ( <div className="App"> <List /> </div> ) } }

と書くパターンか

どうしてもAppにconnectを渡したいならApp側にもprops.todosを持たせて下さい

投稿2018/02/12 00:37

編集2018/02/12 00:42
m0a

総合スコア708

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問