Javascript 如何在同一页面上分隔查询结果

Javascript 如何在同一页面上分隔查询结果,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个页面,它有两个部分: 1) 问题清单; 2) 得票最多的问题清单 这两个查询使用对后端API的相同调用,唯一的区别是我传递了一个额外的参数,例如在后一种情况下showPopular=true 当我尝试渲染数据时,无论最后检索到什么操作,都会覆盖两个部分中的数据。我如何区分这些数据 我正在使用ReactJS,Redux。 这是为了检索数据: query={showPopular:true} this.props.actions.loadQuestions(accountId, query)

我有一个页面,它有两个部分: 1) 问题清单; 2) 得票最多的问题清单

这两个查询使用对后端API的相同调用,唯一的区别是我传递了一个额外的参数,例如在后一种情况下showPopular=true

当我尝试渲染数据时,无论最后检索到什么操作,都会覆盖两个部分中的数据。我如何区分这些数据

我正在使用ReactJS,Redux。 这是为了检索数据:

query={showPopular:true}
this.props.actions.loadQuestions(accountId, query);
我有

const mapStateToProps = (state) => {
    return {
        error: state.questions.error,
        questions: state.questions.questions|| [],
        isLoading: state.questions.isLoading
    };
}

您至少应该分离state/prop/reducer,因为这两个列表完全不同,它们显然会呈现不同的DOM

mapState应具有不同的道具映射:

const mapStateToProps = (state) => {
    return {
        error: state.questions.error,
        questions: state.questions.questions|| [],
        topQuestions: state.questions.topQuestions,
        isLoading: state.questions.isLoading
    };
}
您没有发布reducer,但它也应该将这两个操作分开,或者使用condition更新不同的状态:

export default (state = initialState, action) => {
  switch (action.type) {
    case LOAD_QUESTION:
      if(action.query.showPopular){
        return state.set('topQuestions', action.data);
      }else{
        return state.set('questions', action.data);
      }

    default:
      return state;
  }
};

有减速器动作代码吗?这两个查询是否使用相同的操作和减缩器?是的,所有代码都是相同的。我可以在后端看到,数据被正确返回。您有两个选项:执行不同的操作和不同的还原,或者如果您可以在响应中获得布尔值,则只在还原中创建一个条件,以检查您是否获得了所有问题,还是只获得了最后的投票,并以不同的方式存储它们,以便能够获取整个问题集,或者仅获取最受欢迎的问题。如果不想遵循第一个选项,这将只为一个参数生成不必要的代码。我猜,第二个选项意味着对reducer进行更改以更改状态结构。