javascript - 我如何将操作信息传递给组件、React + Redux?

标签 javascript reactjs redux

因此,我正在 Action.js 上执行 API 请求,完成后,将“成功”参数发送到调用该操作的组件。

最好的方法是什么?

我的代码:

Action.js


export const setarLojas = (lojas) =>{
    return {
      type: SETAR_LOJAS,
      data: lojas
    }
  }

  export const carregarLojas = () => {
    return (dispatch) => {
      return API.get('loja')
      .then(response => {
        dispatch(setarLojas(response.data))

        // Example
        // return "success"
      })
      .catch(error => {
        throw(error);
      })
    }
  }

组件.js

componentDidMount(){
      this.props.carregarLojas();

      // Example
      // if(this.props.carregarLojas == "success") { alert("success") }
    }

最佳答案

您可以使用与您的操作相关的状态(除了您的数据之外,还作为您的 reducer 中的状态);

setarLojas: {
      data: actionData, 
      status: actionStatus
}

然后根据您的操作结果更改您的状态值,

用于状态状态的示例值:'request' | '错误'| '超时' | “成功”。

示例操作:

export const setarLojas = (lojas, status) =>{
   return {
      type: SETAR_LOJAS,
      data: lojas,
      status: status
   }
 }

export const carregarLojas = () => {
    return (dispatch) => {
      dispatch(setarLojas({}, 'request'));
      return API.get('loja')
      .then(response => {
        dispatch(setarLojas(response.data, 'success'));
      })
      .catch(error => {
         dispatch(setarLojas({}, 'error'));
         throw(error);
      })
    }
  }

在您的组件中,使用 connect hoc 将其连接到 redux 后,您可以获得如下数据:

const mapStateToProps = state => ({
     setarLojasData: state.YOUR_REDUCER.getIn(['setarLojasData', 'data']), 
     setarLojasStatus: state.YOUR_REDUCER.getIn(['setarLojasData', 'status'])
})

现在,您已经有了描述操作结果的状态,并且根据其值,您可以管理 View 然后使用数据。

关于javascript - 我如何将操作信息传递给组件、React + Redux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744680/

相关文章:

javascript - React、延迟渲染和钩子(Hook)

javascript - 如何使用 Redux 来表示 Material UI Drawer?

javascript - 类型错误 : Cannot destructure property 'name' of 'item' as it is undefined

javascript - 如何自动处理 javascript 函数调用并包装/装饰它

javascript - 选择 react 路由器时的setState( react )

javascript - 如何通过 JavaScript 发送跨域 POST 请求?

javascript - 从条件渲染的 JSX 内部调用类方法

javascript - 组合 redux reducer 而不添加嵌套

javascript - 类别子类别树问题 javascript

javascript - 在 JS 文件中使用 If 语句和 ember