gpt4 book ai didi

javascript - 已获取数据但未更新状态

转载 作者:行者123 更新时间:2023-11-29 10:26:37 24 4
gpt4 key购买 nike

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

出于某种原因,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);

这是 Action 文件

export const fetchUsers = () => {

return (dispatch, getState) => {
let headers = { "Content-Type": "application/json" };
return fetch("http://127.0.0.1:3030/api/users/", { headers, })
.then(res => {
if (res.status < 500) {
return res.json().then(data => {
return { status: res.status, data };
})
} else {
console.log("Server Error!");
throw res;
}
})
.then(res => {
if (res.status === 200) {
dispatch({ type: 'USERS_FETCHED', data: res.data });
return res.data;
}
})

}
}

这是reducer

const initialState = {
users: []
};

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

最佳答案

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

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

关于javascript - 已获取数据但未更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com