массив объектов большой глубины вложенности, хранится в стейте родительского компонента. для вывода этой структуры используется рекуррентная функция, которая вглубь перебирает все ветки и выводит их. на каждой ветке я могу получить путь к конкретному элементу и передать этот путь в функцию в родительском компоненте немогу понять как мне в стейте поменять значение у одного элемента в глубине вложенности? путь имеет вид this.state.data[3].children[5].children[2].isOpen к примеру
Вообще не нужно делать такой сложный стейт, нормализуй его как то. А вообще вот так https://redux.js.org/recipes/structuring-reducers/immutable-update-patterns
а как тогда по другому решить вопрос с обновлением данных в дереве без обнуления состояний открытости веток?
я загружаю это дерево элементов по API, после чего в каждую ветку добавляю свойство isOpen, по которому определяю развернута ветка или нет. задача в том, что надо в родительском компоненте в стейте менять состояние этого свойства. При изменении данных в дереве, отправляется запрос на бек по изменению данных и на фронте заново загружается объект в родительском компоненте и из предидущего перекладываются в новый состояния из isOpen чтобы сохранить состояния открытости веток
Не понимаю как это противоречит тому что я скинул. Если дерево сложное преобразуй его. Или isOpen храни не в нем, а например отдельным массивом, в котором будут id открытых веток. Если ничего преобразовывать не хочешь то делай огромные редьюсеры как в доке что я скинул или бери immer какой нибудь
Обсуждают сегодня