Я разрабатываю программное обеспечение, которое рисует некоторые элементы на экране и использует их инженеры-механики.
Я записываю данные своего проекта в хранилище редукторов. Эти данные проекта содержат тонны объектов, массивов и т. Д. Я имею в виду, что для каждого элемента на экране есть данные, хранящиеся в проекте.
Когда пользователь выполняет действие, я должен пересчитать проект и, например, снова установить его в избыточное хранилище;
...
case SET_ACTIVE_UNIT:
let unit = action.unit;
project = state.get('project').toJS(); //I'm using immutable
project = ProjectLogic.addActiveUnit(project, unit, action.shiftKey);
return state.set('project', fromJS(project));
...
Хорошо, вы скажете, что этот вид использования не подходит. Потому что я читаю все данные и сбрасываю их, чтобы уменьшить целые данные. Вы посоветуете мне использовать state.setIn
, но это действительно невозможно. Поскольку функция addActiveUnit переопределит проект, будет изменен% 20 данных проекта. Так что я не могу справиться с этим изменением state.setIn
Моя проблема начинается здесь; если на экране отображается 60-80 элементов, то после return state.set('project', fromJS(project));
производительность рендеринга замедляется. Каждый новый предмет становится все хуже.
Как мне справиться с этой проблемой?
Спасибо всем