長いですが、ご助力いただけたら幸いです。
やりたいこと
- 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, });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/28 23:17