javascript - 如何将状态传递给操作以获取 API?
问题描述
所以我是 redux 的新手,我的作业需要一些帮助。我有一个包含几个选项的下拉列表,用户选择的选项需要传递给状态(已经有这个工作并且当用户选择新的东西时状态正在更新),然后传递给可以使用'/stats/${userChoice}'
. 但我根本不知道该怎么做。
动作/index.js:
export const fetchAuthorsStats = () => async dispatch => {
const response = await myAPI.get(`/stats/${userChoice}`);
dispatch({ type: 'FETCH_AUTHORS_STATS', payload: response.data })
};
组件/Dropdown.js:
onAuthorSelect = (e) => {
this.setState({selectAuthor: e.target.value})
};
.
.
.
const mapStateToProps = state => {
return {
authors: state.authors,
selectAuthor: state.selectAuthor,
authorsStats: state.authorsStats
}
};
export default connect(mapStateToProps, { fetchAuthors, selectAuthor, fetchAuthorsStats })(Dropdown)
在“selectAuthor”下,我有我需要传递给此操作 API 的状态
解决方案
您可以通过使用事件目标值直接调用 API 来实现:
/// first you update your API call to receive the selected author
export const fetchAuthorsStats = (userChoice) => async dispatch => {
const response = await myAPI.get(`/stats/${userChoice}`);
dispatch({ type: 'FETCH_AUTHORS_STATS', payload: response.data })
};
//then you update your handler function
onAuthorSelect = (e) =>{
this.props.fetchAuthorsStats(e.target.value)
}
如果您仍希望将其保存在反应状态,您可以先执行 setState,然后使用 (this.state.selectedAuthor) 而不是 (e.target.value) 进行 API 调用
推荐阅读
- javascript - 对 for 循环中的 json 过滤器感到困惑
- c# - ModelState.isValid 始终为假
- gem5 - 已提交指令和已提交操作之间的区别
- sql - SELECT INTO 为 @@ROWCOUNT 返回 0
- python - 在CoockieCutter模板中,仅在选择变量具有给定值时添加文件夹
- matlab - 将数据以三列的形式保存在文本文件中
- android - 如何在 Android 10 中使用 isoparser 库合并视频和音频文件时使用 ContentResolver
- python - 在单选按钮内运行循环
- json - Circe 编码密封特征和 Co 产品案例类失败
- javascript - 将可变数量的参数传递给看起来像“function(*x)”JavaScript 的函数