账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    redux异步请求state和props如何合理控制?
    89
    0

    情景:

    现在有个弹框,当前页面有个按钮,点击按钮显示弹框。

    弹框内有输入表单,输入后点提交按钮请求接口,如果接口请求正确关闭弹框,如果报错,toast提示不关闭当前弹框。

    现在是页面中state中定义个字段isShow来控制弹框隐藏或显示。

    this.state={
        isShow:false
    }

    用到的是redux-saga,在点击的按钮的请求接口

    this.props.menuCreate({id:123})

    对于如果是错误状态的话,需要在reducer里定义一个错误的状态,根据请求状态来修改这个error状态

     let initState={
        error:false
    }

    然后在页面中使用componentWillReceiveProps来判断props的error的状态,然后再修改isShow来控制弹框。

    感觉有点繁琐。

    还是说把弹框的隐藏显示的控制也放到redux的store中,都通过props来控制弹框状态,这样更合理呢。

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 事与愿违故不知爱 普通会员 1楼

      Redux 是一个状态管理库,它的核心思想是通过函数式编程来管理应用程序的状态。Redux 提供了一套强大的中间件,可以帮助你优雅地实现异步请求,同时也能让你轻松地管理你正在处理的状态和状态之间的关系。

      以下是一些合理控制 Redux 异步请求和状态的方法:

      1. 使用 Redux 的 async/await 操作符:Redux 提供了 async/await 操作符,这使得异步操作在异步操作之间建立联系,使得你的代码更加清晰和易于理解。

      ```javascript import { createStore } from 'redux'; import { fetch } from 'redux-async-api';

      const store = createStore( fetch('https://example.com/api/data') ); ```

      1. 使用 Redux 的 mapState 方法:mapState 方法可以帮助你将一个函数应用于所有状态。你可以根据需要编写不同的函数,来处理不同类型的 state。

      ```javascript store.mapState((state, key) => ({ ...state,

      })); ```

      1. 使用 Redux 的 connect 函数:connect 函数可以帮助你将一个函数应用到一个状态上。你可以根据需要编写不同的函数,来处理不同类型的 state。

      javascript const MyComponent = connect( (state, ownProps) => ({ data: state.myData, fetchData: async () => fetch('https://example.com/api/data') }) )(MyComponent);

      1. 使用 Redux 的 AsyncProvider 组件:AsyncProvider 组件可以将一个状态提供给所有的组件。你可以根据需要编写不同的组件,来处理不同类型的 state。

      ```javascript import { AsyncProvider } from 'redux-async-api';

      const MyProvider = ({ children }) => { return ( {children} ); }; ```

      以上就是合理控制 Redux 异步请求和状态的一些方法。希望对你有所帮助。

    • Redux 是一个状态管理库,它的核心思想是通过函数式编程来管理应用程序的状态。Redux 提供了一套强大的中间件,可以帮助你优雅地实现异步请求,同时也能让你轻松地管理你正在处理的状态和状态之间的关系。

      以下是一些合理控制 Redux 异步请求和状态的方法:

      1. 使用 Redux 的 async/await 操作符:Redux 提供了 async/await 操作符,这使得异步操作在异步操作之间建立联系,使得你的代码更加清晰和易于理解。

      ```javascript import { createStore } from 'redux'; import { fetch } from 'redux-async-api';

      const store = createStore( fetch('https://example.com/api/data') ); ```

      1. 使用 Redux 的 mapState 方法:mapState 方法可以帮助你将一个函数应用于所有状态。你可以根据需要编写不同的函数,来处理不同类型的 state。

      ```javascript store.mapState((state, key) => ({ ...state,

      })); ```

      1. 使用 Redux 的 connect 函数:connect 函数可以帮助你将一个函数应用到一个状态上。你可以根据需要编写不同的函数,来处理不同类型的 state。

      javascript const MyComponent = connect( (state, ownProps) => ({ data: state.myData, fetchData: async () => fetch('https://example.com/api/data') }) )(MyComponent);

      1. 使用 Redux 的 AsyncProvider 组件:AsyncProvider 组件可以将一个状态提供给所有的组件。你可以根据需要编写不同的组件,来处理不同类型的 state。

      ```javascript import { AsyncProvider } from 'redux-async-api';

      const MyProvider = ({ children }) => { return ( {children} ); }; ```

      以上就是合理控制 Redux 异步请求和状态的一些方法。希望对你有所帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部