行动取决于来自另一个州的数据

时间:2016-09-18 20:14:14

标签: reactjs redux react-redux

我有一个带有3个减速器的react-redux应用程序:clientPrivilegesuserFilteruserData代理我的商店。

表组件用于显示每个用户的数据,下拉组件用于为特定用户过滤此表。当为特定用户选择下拉时,我需要调用后端来检索数据。这是与此相关的操作:

selectUser(userId, dispatch) {
    api.getUserData(userId, accessTypeId, (data) => {
        dispatch(userActions.update(data));
    });

    return{
        type: selectUser,
        userId
    }
}

但是你可以看到我有一个名为accessTypeId的参数需要发送到后端以及userId。在登录应用程序时使用clientPrivileges reducer在商店中设置了此值。

除了将accessTypeId设置为其mapStateToProps中的下拉组件的道具之外,我看不到任何其他方式。然后在组件本身:

this.props.users.map(u => {

    function onClick() 
    {
        selectEndUserGroup(u.id, this.props.accessTypeId);
    } 
    return <div id={"filter_group_"+u.id} key={u.id} onClick={onClick}>{name}</div>

但是现在我已经使用accessTypeId属性销毁了我的通用下拉组件。我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望您的操作能够访问存储在Redux状态的值,是吗?

Redux-Thunk处理得很好。代码看起来像这样;

selectUser(userId) {
    return function(dispatch, getState){

        var accessTypeId = getState().[PATH TO REDUX STATE ELEMENT]
        api.getUserData(userId, accessTypeId, (data) => {
            dispatch(userActions.update(data));
        });

        dispatch({
            type: selectUser,
            userId
        })
    }
}