在某些文章中,有人说isLoading
(组件级别),isSubmitting
,isFetching
等UI状态不应处于“全局状态”商店。它们应在组件状态下保存和维护。
因此,我试图找出如何在组件中本地处理此类状态。我发现我们可以使用promise或async / await来处理(参考:Using Async/Await)
例如,这就是我们可以使用Promises
和Redux-thunk
处理isSubmitting
在Actions Creator中:
export const addStudent = (payload) => {
return function (dispatch) {
return StudentService.add(payload).then(() => {
dispatch(addStudentSuccess());
dispatch(fetchStudents());
});
};
}
在Redux Connected Component中,等待完成并切换isSubmitting
状态:
async onSubmit={(values) => {
setState({isSubmitting: true});
await this.props.addStudent(values);
setState({isSubmitting: false});
}}
但是,在Redux页面上,它提到Redux是严格的单向数据流。在我看来,等待动作创建者返回响应的组件正在打破单向流程。变为双向流,如下图所示(见红色箭头):
我想知道是否允许这样做。还是我误解了单向数据流语句?