с помощью 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