组件是否正在等待Redux Action Creator反模式的承诺?

时间:2019-04-29 15:24:56

标签: reactjs react-redux

在某些文章中,有人说isLoading(组件级别),isSubmittingisFetching等UI状态不应处于“全局状态”商店。它们应在组件状态下保存和维护。

因此,我试图找出如何在组件中本地处理此类状态。我发现我们可以使用promise或async / await来处理(参考:Using Async/Await

例如,这就是我们可以使用PromisesRedux-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是严格的单向数据流。在我看来,等待动作创建者返回响应的组件正在打破单向流程。变为双向流,如下图所示(见红色箭头):

enter image description here

我想知道是否允许这样做。还是我误解了单向数据流语句?

0 个答案:

没有答案