с помощью react-redux нужно менять состояние объекта через инпуты, в одном задаем путь к объекту, во втором меняем название

    с помощью react-redux нужно менять состояние объекта через инпуты, в оном задаем путь к обьекту, во втором меняем название значение
    
    начальный стейт:
        
        
        let initialState = [
                {
                    type: 'panel',
                    props: {
                        width: 500,
                        height: 200,
                        visible: true,
                        caption: 'test1'
                    },
                },
                {
                    type: 'label',
                    props: {
                        caption: 'test',
                        visible: false
                    },
                },
                {
                    type: 'button',
                    props: {
                        width: 100,
                        height: 50,
                        visible: true
                    },
                },
                
            ] 
        
    
    сам reducer выглядит так:
        
        
        export const changeData = createAction('CHANGE_DATA', function prepare(data){
        
            return {
                payload: {
                   data,
                     path: data.path,  \\значение из инпута "ПУТЬ"
                     changeCall: data.changeCall  \\ значение из инпута "ПОМЕНЯТЬ НАЗВАНИЕ"
                
                }
            }
        })
         const mainReduser = createReducer(initialState,{
            [changeData]: function (state, action) {
            
  \\допустим я хочу поменять поле одного из объектов, из инпута "ПУТЬ"(action.payload.path) приходит строка "state[1].props.caption",
                 а из инпута "ПОМЕНЯТЬ НАЗВАНИЕ"(action.payload.changeCall) строка "test2"
  \\вопрос: как превратить эту строку из инпута "ПУТЬ" в ссылку на объект и подставить в левую часть выражения 
  \\которое приведено ниже что бы выражение работало если это возможно
                
                \\сейчас все работает если левую часть выражения захардкодить:
                       state[1].props.caption = action.payload.changeCall\\значение из инпута "ПОМЕНЯТЬ НАЗВАНИЕ"
        
               \\а хотелось бы что бы работало так:
               \\значение из инпута "ПУТЬ" = значение из инпута "ПОМЕНЯТЬ НАЗВАНИЕ"
                       action.payload.path = action.payload.changeCall 
        
             
        
          },
        })
        
        export default mainReduser
        
    
 

Ответы (0 шт):