2017-03-04 3 views
2
私が反応勉強

を使用してredux.Iはモックアッププロジェクトを構築していたときに、ルータがコンポーネントをレンダリングしない反応します、は、プロジェクトを実行すると、私は、 私のコンテナコードホームルートをクリックすると、しかし、何も描画されていないエラーが無いものの、Reduxの

import Home from '../components/Home.js' 
 
import { 
 
    editorContentUpdated 
 
} from '../action/index.js' 
 

 

 
const mapStateToProps = (state) => { 
 
    return { 
 
    editorText: state.editorText 
 
    }; 
 
} 
 

 

 
const mapDispatchToProps = (dispatch) => { 
 
    console.log('here') 
 
    onBlur: (text) => { 
 
    console.log('text', text); 
 
    dispatch(editorContentUpdated(text)); 
 
    } 
 
} 
 

 
export default (mapStateToProps, mapDispatchToProps)(Home);

減速コード、

const editorReducer = (state, action) =>{ 
 
    if(state == undefined){ 
 
     return null 
 
    } 
 
    console.log('editorReducer',action.payload); 
 
    switch(action.type){ 
 
     case 'EDITOR_SELECTED': 
 
     return action.payload 
 
     break; 
 
     case 'CONTENT_UPDATED': 
 
     return action.payload 
 
     break; 
 
    } 
 
    return state; 
 

 
} 
 
export default editorReducer;

アクションクリエイター、

export const getPreviewContent = (text) =>{ 
 
    console.log('previewContent', text); 
 
    return{ 
 
     type:'PREVIEW_SELECTED', 
 
     data:text 
 
    } 
 
} 
 
export const editorContentUpdated =(text) =>{ 
 
    console.log('editor content', text); 
 
    return { 
 
     type:'CONTENT_UPDATED', 
 
     data:text 
 
    } 
 
}

routes.jsファイル、

import React from 'react' 
 
import{Router,Route,IndexRoute,browserHistory} from 'react-router' 
 
import Layout from '../components/Layout.js' 
 
import Home from '../container/editor.js' 
 
import Preview from '../components/Preview.js' 
 
const routes = (
 
    <Router history={browserHistory}> 
 
     <Route path='/' component={Layout}> 
 
      <IndexRoute component={Home} /> 
 
      <Route path='preview' component={Preview} /> 
 
     </Route> 
 
    </Router> 
 
); 
 
export default routes;
レイアウト、

import React from 'react' 
 
import { 
 
    Link 
 
} from 'react-router' 
 
import { 
 
    connect 
 
} from 'react-redux' 
 

 
var Layout = React.createClass({ 
 
    render: function() { 
 
    var styles = { 
 
     paddingRight: '10px' 
 
    } 
 
    console.log('custom', this.props.custom); 
 
    var custom = this.props.custom; 
 
    return (<html > 
 
     <head > 
 
     <title > {custom.title} < /title> <link rel = 'stylesheet href = '/style.css'/> 
 
     </head> <body > 
 
     <nav > 
 
     <Link style = {styles 
 
     }to = '/' > Home < /Link> < 
 
     Link to = '/preview' > Preview < /Link> </nav> { 
 
     this.props.children 
 
     }<script dangerouslySetInnerHTML = {{ 
 
      __html: 'window.PROPS=' + JSON.stringify(custom) 
 
     }}/> <script src = '/bundle.js'/> 
 
     </body> </html>);} 
 
}); 
 

 
var wrapper = connect(
 
    function(state) { 
 
    return { 
 
     custom: state 
 
    }; 
 
    } 
 
); 
 

 
export default wrapper(Layout);
ホームコンポーネント、

import React from 'react' 
 
import { 
 
    Link 
 
} from 'react-router' 
 
let Home = React.createClass({ 
 
    getInitialState: function() { 
 
    return { 
 
     editorText: '' 
 
    } 
 
    }, 
 
    updateText: function(event) { 
 
    this.setState({ 
 
     editorText: event.target.value 
 
    }) 
 
    }, 
 
    render: function() { 
 
    let wrapperStyle = { 
 
     width: '100%' 
 
    } 
 
    let editorStyle = { 
 
     float: 'left', 
 
     width: '50%', 
 
     height: 'auto' 
 
    } 
 
    let previewBoxStyle = { 
 
     float: 'left', 
 
     height: 'auto', 
 
     width: '50%' 
 
    } 
 
    return (< 
 
     div style = { 
 
     wrapperStyle 
 
     } > 
 
     < 
 
     div style = { editorStyle} > 
 
     <textarea rows = '10' cols = '50'onChange = {this.updateText} 
 
     value = {this.props.editorText}/> </div> </div>);} 
 
});

あり、コンソールにはエラーはありませんが、私はホームボタンをクリックすると、ホームコンポーネントが描画されていない、誰もがお勧めでしたどこが間違っているの?あなたが反応する-Reduxのを利用するとき、私はあなたがコンポーネントをエクスポートし、それゆえ部品が

をレンダリングされません見ることができないあなたのHomeコンポーネントで

+0

Cを利用するために必要な、あなたのコンポーネントが利用できるstoreをする必要があります'Layout'と' Home'コンポーネントのコードを共有していますか? –

+0

コンポーネントコードを追加しました。 – Idlliofrio

答えて

0

はまた

export default Home; 

としてHomeコンポーネントをエクスポートあなたはそのためにあなたがProvider

import { Provider } from 'react-redux' 


import React from 'react' 
import{Router,Route,IndexRoute,browserHistory} from 'react-router' 
import Layout from '../components/Layout.js' 
import Home from '../container/editor.js' 
import Preview from '../components/Preview.js' 
import { createStore } from 'redux' 
import EditorReducer from '/path/to/reducer'; 
.... 
const store = createStore(EditorReducer) 
const routes = (
    <Provider store={store}> 
    <Router history={browserHistory}> 
     <Route path='/' component={Layout}> 
      <IndexRoute component={Home} /> 
      <Route path='preview' component={Preview} /> 
     </Route> 
    </Router> 
    </Provider> 
); 
export default routes; 
関連する問題