Это как правильно добавить новый элемент в состояние? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь добавить объект oldWorkout в хранилище, чтобы я мог использовать то, что я в него вставляю, но что бы я ни пытался, он не добавляет в хранилище, даже если я начинаю с объекта oldWorkout непосредственно всостояние и просто вставьте туда данные.

const initialState = {
    workoutlist: [],
}

const workoutList = (state = initialState, action) => {
    switch (action.type) {

        case 'LOAD_DATA':
            let oldWorkout = {};
            state.workoutlist.map((workout) => {
                if(workout.id === action.id){
                     return oldWorkout = Object.assign(workout);
                }
                return workout;
            });
            return state ={
                ...state,
                oldWorkout
            }

        default:
            return state;
    }
}

export default workoutList;

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Это наиболее правильный способ изменения состояния редукса / компонента / класса

const initialState = {
    workoutlist: [],
    oldWorkout: null // add new property to state, use false or null
}

const workoutList = (state = initialState, action) => {
    switch (action.type) {

        case 'LOAD_DATA':
            const item = state.workoutlist.find(v => v.id === action.id) // just find item
            if (item) {
                return {
                    ...state, // copy old state to new state
                    oldWorkout: item // change oldWorkout
                }
            }
            return state

        default:
            return state;
    }
}

export default workoutList;
0 голосов
/ 20 сентября 2019
const initialState = {
 workoutlist: [],
 oldWorkout: {}
}

const workoutList = (state = initialState, action) => {
 switch (action.type) {

 case 'LOAD_DATA':
  return {
    ...state,
    workoutlist: state.workoutlist.map((workout) => {
      if (workout.id === action.id) {
        state.oldWorkout = Object.assign(workout);
      }
    return workout
    })
  };
default:
  return state;
 }
}

 export default workoutList

попробуйте

...