如何在redux中处理错误和loading这种情况呢?

#1

有咩有最佳实践呢:kissing_closed_eyes:

#2

哪有什么最佳实践,自己写的顺手、又能达到需求的就是很好的实践,就算把题叶的代码实践给你用,你也不可能和他完全同步代码风格的写法啊。

#3

目前我是这么处理loading和异常的,但感觉思路不对,如果有一些异步操作触发了多次请求或者多次error,这时候全局dispacth就重复了,甚至有一些错误并不是http请求引起的应当如何处理,求大佬讲解下思路:sob:

axios.interceptors.response.use(
    response => {
        //status为200-300
        store.dispatch(hideLoading())
        const result = response.data
        if (result.code === 0) {
            return result.data
        } else {
            const error = new Error()
            error.code = result.code
            error.message = result.message
            error.response = response
            return Promise.reject(error)
        }
    },
    error => {
        store.dispatch(hideLoading())
        const { response } = error
        if (typeof (response) == 'undefined') {
            error.message = '连接超时,请检查网络'
            return Promise.reject(error)
        }
        if (response.data.status === 401) {
            store.dispatch(push('/login'))
        }
        const _error = new Error()
        _error.code = response.status
        _error.message = response.data.message
        _error.response = response
        return Promise.reject(_error)
    }
)
#4

我只是想看看有没有可以参考的:yum:

#5

这么长代码,认真看球赛。

#6

也想问问。一个页面里面有很多的交互loading组件,如果在请求中,用户返回上一个页面这个状态就不好处理还原了。。。

#7

组件内部的loading不要放到redux、不要放到redux、不要放到redux,redux不是一键装机模式,任何功能都要区分内外实现。

#8

用sagas啊。很完善

#9

可以写一些通用的提示组件啊,toast

有兴趣可以看一下,我写的一些demo,公司项目中也是这么做的 https://github.com/meibin08/react-redux
https://github.com/meibin08/react-redux