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