массив (Array) двумерный для хранения 256 дивов (ячеек) игрового поля.
Далее начал работать со стейтом.
Настал этап изменения одной ячейки по клику мыши.
Передаю в функцию изменения id из которого спокойно могу найти как строку так и ячейку.
НО вместо того что бы тотечно обращаться в свой массив - стейт, я начинаю обходить коллекцию с помощью map и создавать новый массив для стейта аля Immutability.
Вопрос: Есть ли вообще смысл использовать двумерный массив если тотечные изменения мне не доступны? (по координате X и Y)
У тебя в стейте прям разметка лежит в массиве?
Да. Решил туда поместить массив 16x16.
Ну так храни только данные для разметки в стейте , а ячейки опиши отдельными компонентами с пропсами своими. Таким образом, у тебя будет рендерится только тот компонент (ячейка) у которой изменятся входные параметры. Остальные не будут рендерится
Не понял. У меня в каждом элементе массива хранится объект: { 'id': 0, 'type': 'grass' } Ты предлагаешь сделать плоский список? Значит ли это, что двумерные массивы не жизнеспособны в рендеренге react?
не, мы думали, что у тебя в массивах JSX прямо лежит. двумерные массивы ок
Все норм при рендеринге, но обход массивов не бесплатный. Если ты рендеришь массив, то окей. Но если ты ищешь специфичные данные (по айди), то лучше объекты или мапы с О(1)
Обсуждают сегодня