【问题标题】:how to dispatch same action with different params in react redux如何在react redux中使用不同的参数调度相同的动作
【发布时间】:2020-01-15 14:47:22
【问题描述】:

我想知道如何在 react redux 中调度具有不同参数的操作。

在format.js中,queryData参数不同的callFetch方法调用。 props dispatch 后,在 render 方法中会收到 props memberData 中的数据,

我收到回复memberData,状态为Inactive,但是 如何同时显示ActiveInactive


// format.js

componentDidMount(){
 this.callFetch();
}

callFetch(){
    this.props.dispatch(queryData(this.createFetchUrl("Active")));
    this.props.dispatch(queryData(this.createFetchUrl("Inactive")));
}

createFetchUrl(status) {
   const body ={
     position: "civil",
     status: status 
   }
  return body;
}

render(){
  const { memberData } = this.props.data
  return(
     <div>
     Active 
     <p>{memberData}</p>
     Inactive
     <p>{memberData}</p>
    </div>
  )
}


//actions.js
export const queryDeviceByMember = payload =>
  queryApi({
    request: CONSTANTS.DATA,
    url: `api/details`,
    encode: false,
    success: CONSTANTS.DATA_SUCCESS,
    failure: CONSTANTS.DATA_FAILURE,
    ...payload
  });

//reducer.js

    case CONSTANTS.DATA_SUCCESS:
    case CONSTANTS.DATA_FAILURE:
      return {
        ...state,
        memberData: data,
        apiPending: false,
        errormsg: errormsg,
        servererror: servererror || ""
      };

activeinactive 状态都收到相同的响应,因为它会覆盖,而不是覆盖如何做


[{
   id: "20",
   name: "xxx",
   device: "ios"
 },
 {
   id: "10",
   name: "yyy",
   device: "ios"
 }]

【问题讨论】:

  • 您能否提供一个示例响应和预期输出?

标签: javascript reactjs redux react-redux redux-saga


【解决方案1】:

您正在覆盖memberData 中的数据,请考虑执行以下步骤:

  1. 将减速器拆分为 activeinactive 案例
  2. 使用选择器从您的状态中选择数据,即:
export const getActiveMembers = state => state.activeMembers;
export const getInactiveMembers= state => state.inactiveMembers;
  1. 将步骤 2 中的选择器导入到您的组件中,并使用 mapStateToProps(state) 从您的状态中获取数据:
function mapStateToProps(state) {
    return {
        activeMembers: getActiveMembers(state),
        subscription: getInactiveMembers(state)
    };
}
  1. 使用渲染中的数据:
render(){
 const { memberData } = this.props.data
 return(
    <div>
    Active 
    <p>{memberData}</p>
    Inactive
    <p>{memberData}</p>
   </div>
 )
}
  1. 祝你好运

P.S:我会使用一个 API 调用来获取所有 members,然后使用 reducer 在我的状态下将它们分类为 inactiveactive

【讨论】:

  • 感谢回复,是否可以在每次调用activeinactivestatus 时将响应数据附加到reducer 中
猜你喜欢
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
  • 2021-10-14
相关资源
最近更新 更多