reactjs - 如何使用 redux 执行 api 调用?
问题描述
我最近在学习 react-redux。现在我对如何执行api call
.
这是我的 action.ts
export const fetchEvent = () => async (
dispatch: Dispatch
) => {
dispatch({ type: ActionTypes.FETCH_EVENT_REQUEST });
try {
const response = await axios.get<EvenData[]>(
`https://jsonplaceholder.typicode.com/todos/`
);
dispatch<FetchEventAction>({
type: ActionTypes.FETCH_EVENT_SUCCESS,
payload: response.data
});
} catch (error) {
dispatch({ type: ActionTypes.FETCH_EVENT_FAILURE, error });
}
};
这是我的事件列表,这是我要调用 api 调用的地方
const mapStateToProps = (state: ActionTypes) => ({});
const dispatchProps = {};
type Props = ReturnType<typeof mapStateToProps> & typeof dispatchProps;
type State = {};
class EventList extends React.Component<Props, State> {
componentDidMount() {
// dispatch(fetchEvent());
}
render() {
return (
<section>
<p>{ }</p>
</section>
);
}
}
export default connect(
mapStateToProps,
dispatchProps
)(EventList);
那么如何进行 api 调用呢?在我的里面componentDidMount
解决方案
您缺少 mapDispatchToProps ,您使用的是空 {}。
import {fetchEvent} from 'action.ts' // change to correct path
const mapStateToProps = (state: ActionTypes) => ({});
const mapDispatchToProps = (dispatch: Dispatch) => {
return {
fetchEvent: () => {
dispatch(fetchEvent())
}
};
};
type Props = ReturnType<typeof mapStateToProps> & ReturnType<typeof mapDispatchToProps>;
type State = {};
class EventList extends React.Component<Props, State> {
componentDidMount() {
this.props.fetchEvent()
}
render() {
return (
<section>
<p>{ }</p>
</section>
);
}
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(EventList);
推荐阅读
- flutter - 如何修复“无法快照构建脚本”
- visual-studio - 如何使用 Visual Studio 2019 为解决方案中的多个项目指定自定义代码分析规则集?
- apache - LAN连接到wamp主页,而不是www中的项目
- asp.net-mvc - WebActivatorEx 启动方法未运行
- apostrophe-cms - 在 ApostropheCMS 中将 JS 从 npm 模块推送到浏览器
- python - Google Bigquery 存储:读取 to_dataframe 时出现 DeadlineExceeded 错误
- spring - 未对 @Transactional 注解执行回滚
- python-3.x - 是否可以在不定义顺序或关键字之间的单词数的情况下使用基于空间规则的匹配?
- node.js - 断言传递给存根函数的函数是正确的函数
- javascript - 如何在 Tempus Dominus datetimepicker 中修复“未捕获的类型错误:无法读取未定义的属性‘格式’”?