Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 已获取数据,但状态未更新_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 已获取数据,但状态未更新

Javascript 已获取数据,但状态未更新,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在从端点获取数据。但是状态没有更新。它总是未定义的 由于某些原因,this.props.users未定义。我做错什么了吗 在componentDidMount()之后,我触发操作fetchUsers向端点发送请求。已成功获取数据,但最后状态未更新 这是我的布局组件 class Layout extends Component { render() { return ( <div className="container">

我正在从端点获取数据。但是状态没有更新。它总是未定义的

由于某些原因,this.props.users未定义。我做错什么了吗

在componentDidMount()之后,我触发操作fetchUsers向端点发送请求。已成功获取数据,但最后状态未更新

这是我的布局组件


class Layout extends Component {
    render() {
        return (
            <div className="container">
                {
                    this.props.users.map((user, key) => {
                        return <a className="list-group-item list-group-item-action active">User #{user.id}</a>
                    })
                }
            </div>
        )
    }
}

const mapStateToProps = state => {
    return {
        channels: state.users.data,
    }
}

const mapDispatchToProps = dispatch => {
    return {
        fetchUsers: () =>
            dispatch(user.fetchUsers()),
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(Layout);


我认为错误来自于您在
mapDispatchToProps
中呼叫调度员。由于您直接导出函数
fetchUsers
,因此不应调用
user.fetchUsers

const mapDispatchToProps = dispatch => {
    return {
        fetchUsers: () =>
            dispatch(fetchUsers()),
    }
}

如何导入
fetchUsers
?当您连接组件时,确实不需要
mapDispatchToProps
,组件
DispatchToprops
已注入组件。aka
导出默认连接(mapStateToProps)(布局)
。。。。然后在您的
组件中安装
this.props.dispatch(fetchUsers())
const initialState = {
    users: []
};

export default function channels(state = initialState, action) {
    switch (action.type) {
        case 'USERS_FETCHED':
            return { ...state, users: action.data };
        default:
            return state;
    }
}

const mapDispatchToProps = dispatch => {
    return {
        fetchUsers: () =>
            dispatch(fetchUsers()),
    }
}