Вопрос слишком широкий ... слишком много проблем, которые вы пытаетесь решить.
Изучите любой пример / учебное пособие, чтобы узнать о «потоке» управляемых данными данных.
Выборка данных и представление визуализации с использованием простых компонентов - сопоставление / преобразование результата (структура БД, например, список листьев) с требованиями к компонентам (массив дней)
Каждый <Status/>
обработчик изменений должен обновлять БД, но также обновлять состояние родителя (для принудительного повторного рендеринга - обновлять представление, передавать новые реквизиты дочерним элементам) ... обработчик должен существовать в родительском объекте и передаваться как prop
Каждый <Status/>
должен получить больше реквизитов, например date
(или день для просмотра календаря), id
(запись в БД), state
(значение) и использовать их для визуализации представления, передачи в обработчик ... или массива (id, person_id / name, state) для отображения множества [изменяемых] записей в одной ячейке дня
Обновление
Мне нужно сохранить состояние каждая клетка в основном.
Нет, как в БД, вам нужны только не значения по умолчанию.
Таким образом, объект типа {alias1: 1 {value: 'P', вариант: 'success' }, 2: {}, 3 {} .......}, alias2 {1: {} .....} может помочь. Но это будут значения no_of_alias * 31 * 3 для хранения в самом состоянии, и это делает страницу действительно медленной. Мне нужен хороший способ для хранения и отображения состояния каждой ячейки (псевдоним, дата).
Массив из 31 элемента достаточно хорош. Каждый из них может быть пустым (неопределенным), отдельным объектом или массивом. Макет состояния с чем-то вроде:
let arr = []
arr.length = 31
arr[5] = { db_key: 'some key', alias: 'one', value: 'PL' }
arr[15] = [
{ db_key: 'some key#2', alias: 'one', value: 'PL' },
{ db_key: 'some key#3', alias: 'two', value: 'WO' }
]
Просто визуализируйте [используя .map
] <Status day={i+1} content={arr[i]} key={i} changeHandler= />
(variant
можно получить из значения - я думаю), дата
<Status/>
Компонент должен отображать только номер дня, когда данные undefined
, один псевдоним и выпадающий список для одного объекта (проверьте, не массив ли), и больше [вложенных] строк, если массив [in props] существует. элементы в массиве / состоянии не должны влиять на скорость рендеринга. Узлы обновляются в виртуальном DOM, и только измененные компоненты (с измененными реквизитами) перерисовываются.
После этого попытайтесь реализовать выборку и преобразование данных в желаемую структуру состояний. Не забудьте создавать новые объекты как элементы массива (arr[i]
) (не изменяйте существующие) во время обновлений [в обработчике] - требуется для принудительного изменения ячеек.