Search code examples
reduxreact-redux

Access State inside of mapDispatchToProps method


I have written a container component using redux and my implementation for mapDispatchToProps looks like this

const mapDispatchToProps = (dispatch, ownProps) => {
    return {
        onChange: (newValue) => {
            dispatch(updateAttributeSelection('genre', newValue));
            dispatch(getTableData(newValue, ownProps.currentYear));
        }
    }
}

The problem is that in order to getTableData I need the state of some other components. How can I get access to the state object in this method?


Solution

  • You can use redux-thunk to create a separate action creator function which has access to getState, rather than defining the function inside mapDispatchToProps:

    function doTableActions(newValue, currentYear) {
        return (dispatch, getState) => {
            dispatch(updateAttributeSelection('genre', newValue));
            let state = getState();
            // do some logic based on state, and then:
            dispatch(getTableData(newValue, currentYear));
        }
    }
    
    
    let mapDispatchToProps = (dispatch, ownProps) => {
        return {
            onChange : (newValue) => {
                dispatch(doTableActions(newValue, ownProps.currentYear))
            }
        }
    }
    

    Some varying ways to go about organizing those, but something like that ought to work.