为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript,Redux:数组没有价值

JavaScript,Redux:数组没有价值

饮歌长啸 2022-05-26 17:51:41
我正在尝试为使用 Redux 操作的用户获取一些统计信息和问题,并将其传递给 React 组件。问题是,我有一个 objects 数组,curPageExercisesMarked用于页面的分页,但它不采用我分配给它的值。奇怪的是 Redux 商店中的其他字段得到了更新,但没有这个。我尝试在动作中安慰对象,但它只是打印这个:重要的是要提到我在另一个动作中做类似的事情,使用完全相同的分配,它在那里工作。我已经失去了一个小时试图弄清楚这件事,所以欢迎任何帮助。Redux 操作:export const setStatistics = (problems,problemsSolved,filter = '') => dispatch => {let payload = {subject1: 0,subject2: 0,subject3: 0,total: 0,exercisesMarked: [],curPageExercisesMarked: []};for (let i = 0; i < problems.length; i++) {  if (problems[i].S === '1' && problemsSolved.includes(problems[i]._id)) {   payload.subject1++;   payload.total++;   payload.exercisesMarked.push(problems[i]);  } else if (   problems[i].S === '2' &&   problemsSolved.includes(problems[i]._id)  ) {   payload.subject2++;   payload.total++;   payload.exercisesMarked.push(problems[i]);  } else if (   problems[i].S === '3' &&   problemsSolved.includes(problems[i]._id)  ) {   payload.subject3++;   payload.total++;   payload.exercisesMarked.push(problems[i]);  } } payload.curPageExercisesMarked = payload.exercisesMarked.slice(0, 10); dispatch({  type: SET_USER_STATISTICS,  payload });};redux 减速器:export default function(state = initialState, action) {const { type, payload } = action;switch (type) {case SET_USER_STATISTICS:  return {    ...state,    exercisesMarked: payload.exercisesMarked,    curPageExercisesMarked: payload.curPageExercisesMarked,    subject1: payload.subject1,    subject2: payload.subject2,    subject3: payload.subject3,    total: payload.total  }; case CHANGE_PAGE_MARKED:  return {    ...state,    page: payload,    curPageExercisesMarked: state.exercisesMarked.slice(      (payload - 1) * state.pages_count,      payload * state.pages_count    )  }; default:  return state; }}这是不起作用的部分: payload.curPageExercisesMarked = payload.exercisesMarked.slice(0, 10);
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超7个赞

您可以先简化代码,如下所示。更新/打印console.log(JSON.stringify(payload))。我认为if(problemsSolved.includes(problems[i]._id))没有按预期工作


export const setStatistics = (

  problems,

  problemsSolved,

  filter = ""

) => dispatch => {

  let payload = {

    subject1: 0,

    subject2: 0,

    subject3: 0,

    total: 0,

    exercisesMarked: [],

    curPageExercisesMarked: []

  };

  for (let i = 0; i < problems.length; i++) {

    if(problemsSolved.includes(problems[i]._id)) {

      payload["subject"+ problems[i].S]++

      payload.total++;

      payload.exercisesMarked.push(problems[i]);

    }

  }

  payload.curPageExercisesMarked = payload.exercisesMarked.slice(0, 10);


  dispatch({

    type: SET_USER_STATISTICS,

    payload

  });

};

// 还


case SET_USER_STATISTICS:

  return {

    ...state,

    ...payload

  };


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号