2016-01-25 85 views
0

試圖用我自己的例子實現ReactRedux,我有點掙扎。看起來好像我的道具沒有被賦予任何價值,並且在React渲染它們時仍然沒有定義。我的方法一般是正確的,只有一個簡單的錯誤,或者是否有錯誤?Redux:渲染時未定義道具

我重建我的問題在jsbin

class Walls extends React.Component { 
    render() { 
    return (
     <div id="main"> 
      <div>volume: {this.props.volume}m³</div> 
     </div> 
    )} 
} 

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

const WallContainer = connect(mapStateToProps)(Walls); 

function reducer(state = Map(), action) { 
    switch (action.type) { 
    case 'SET_STATE': 
    return state.merge(action.state); 
    } 
    return state; 
} 

const store = createStore(reducer) 
store.dispatch({ 
    type: 'SET_STATE', 
    state: {"volume":1567.571734691151} 
}) 

ReactDOM.render(
     <Provider store={store}> 
      <WallContainer /> 
     </Provider>, 
     document.getElementById('root') 
); 

回答

3

你必須當您連接映射來自永恆Map回來,否則你的方法看起來是正確的對我說:

const mapStateToProps = (state) => { 
    return { 
     volume: state.get('volume') 
    }; 
} 

記住在這一點上,state仍然是一個不可變的Map,而不僅僅是一個JavaScript對象。

相關問題