亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號