Где лучше хранить данные изображения в приложении на React/Redux?
Есть приложение на React/Redux, в котором есть функционал по загрузке изображений через FileReader. После того как изображение загружено, я получаю его в виде dataUrl. Так вот, где лучше сохранять эти данные, если в дальнейшем они будут использоваться в нескольких компонентах React для рендеринга в Canvas? Хранить относительно большой объём данных в Redux Store кажется плохой идеей. В то же время, если данные изображения сохранить где-то в другом месте, то ломается идея "one source of true". Есть у кого-то какие-либо предложения?
Мне кажется, что в данном случае хранение этих данных в store полностью оправдано.
Ведь если вы в другом месте сохраните эти изображения, общее количество памяти, которое занимает приложение, останется одним и тем же.
Не забывайте, что хранилище обновляет только тот кусочек, который нужен на конкретный action, поэтому ваша картинка не будет клонироваться на каждый action, а только на соответствующий.
Олег Драпеза, но ведь каждый раз редьюсер создаёт новую, немного изменённую версию стейта. А старая соответственно удаляется сборщиком мусора. Когда данных не так уж и много, то в этом ничего плохого. Но если хранить там изображения, то не будет ли это плохо в плане сборки мусора?
titanium4februa, каждый редьюсер меняет только тот кусок стейта, за который отвечает.
Соответственно пересоздаваться кусок с изображениями будет только тогда, когда вы будете добавлять/удалять изображения, а не на каждый чих.
Соответственно, почти никакой разницы, будете ли вы каждое изображение хранить в store, или в глобальном объекте где-то в коде.
Но если вы уж так сильно переживаете, никто не мешает протестировать, добавляя сотню мизерных изображений, или сотню больших)
Ваге, пока на этом и остановился, вроде никаких проблем нет. Другой вариант ещё есть хранить изображения не как dataUrl, а через URL.createObjectURL(). Опять же в store