Ad

Redux: Props Are Undefined When Rendering

- 1 answer

trying to implement ReactRedux with my own example, I'm a bit struggling. It appears as if my props aren't given any value and are still undefined when React renders them. Is my approach in general correct and only a simple error or is there something really wrong?

I've recreated my problem in 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')
);
Ad

Answer

You just have to map back from Immutable Map when you connect, otherwise your approach looks correct to me:

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

Remember that at this point, state is still an Immutable Map, not just a JavaScript object.

Ad
source: stackoverflow.com
Ad