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

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

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

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

React.js

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

Q&A

解決済

1回答

338閲覧

Reactクラスコンポーネントでreduxの情報を表示させる方法

Hayashi_Jelly

総合スコア26

Redux

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

React.js

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

0グッド

0クリップ

投稿2018/09/23 15:52

長いですが、ご助力いただけたら幸いです。

やりたいこと

  • HeaderコンポーネントにページID(タイトル)を表示させたい。ページ遷移したときに、ページIDのstateを変更するactionを発行して、ページIDが切り替わるようにしたいが、そもそも、initialStateを表示させることが出来ないので、これを表示できるようにしたい。

備考

  • redux-loggerのstate情報では、ページIDのstateは任意の値で管理出来ていて、これをpropsにmapするあたりの書き方がよく分かっていないのが原因だと思っています。

render() 内の page は undefined になってしまいます。

  • ややこしいですが、redux 以外に Headerコンポーネントだけで完結するstateを持っています。

Header.js

jsx

1import React, { Component } from 'react'; 2import { connect } from 'react-redux'; 3 4class Header extends React.Component { 5 6 state = { hoge: 'fuga',}; 7 8 render ( ) { 9 const { page } = this.props; 10 return ( <div>{ page }</div> ); 11 } 12} 13 14const mapStateToProps = main => ( { page: main.value, } ); 15export default connect( mapStateToProps, null )( Header );

store/index.js

jsx

1import { 2 createStore as reduxCreateStore, 3 combineReducers, 4 applyMiddleware, 5} from 'redux'; 6import { 7 routerReducer, 8 routerMiddleware, 9} from 'react-router-redux'; 10import logger from 'redux-logger'; 11 12import reducers from '../reducers/'; 13 14export default function createStore( history ) { 15 return reduxCreateStore( 16 combineReducers({ 17 main: reducers, 18 router: routerReducer, 19 }), 20 applyMiddleware( 21 routerMiddleware( history ), 22 logger, 23 ) 24 ); 25}

action/index.js

jsx

1const initialState = { value : 'HOME', } 2 3export default ( state = initialState, action ) => { 4 switch ( action.type ) { 5 default: 6 return state; 7 } 8}

reducer/index.js

jsx

1import { combineReducers } from 'redux'; 2import page from './page'; 3 4export default combineReducers({ page, });

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

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

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

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

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

guest

回答1

0

ベストアンサー

action/index.jsの中身が、reducer/page.jsに見えますが、どうでしょう?

mapStateToPropsは、引数に、redux全体のStoreが渡されますので、
combineした時のツリー構造で、名前を辿らないと、実際のvalueにたどり着かないと思います。
(ネストしてcombineできるんですね、知らなかった・・・)

const mapStateToProps = {main} => ( { page: main.page.value, } );

投稿2018/09/25 04:55

Meganezaru

総合スコア715

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

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

Hayashi_Jelly

2018/09/28 23:17

おっしゃる通りに修正して、色々いじっていたら動きました。ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問