Подскажите, как организовать множество хєндлеров для состояния useState через useContext ?
Есть [canvas, setCanvas] = useState, который подключается в любой компонент через useContext.
Важно то, что для canvas нужно создать множество хэндлеров по типу set, get, update, remove. Все эти хэндлеры должны быть по разным файлам и вызываться где угодно. Также, не менеее важно, что хэндлеры скорей всего могут вызывать друг друга. Что у меня и вызвало замыкание вызовов при создании кастомных хуков. Например: хук setHandlers имеет метод setConfig. Он устанавливает конфиг, например, и затем должен вызвать другой метод с другого хэндлера, например, getHistory. Самое важно, если уж вы поняли, о чем идет речь и как с этим быть. Нужно учесть сущность history, например, canvasHistory. К которому должны иметь доступ любой из хэндлеров. Т.е. метод addObjectToCanvas добавляет обьект и должен вызвать обновление истории канваса. И тут то как раз проблема в получении последнего актуального canvasHistory. Вообщем, делема еще та ) Кто в силах помочь, буду отзывчив любой помощи!
Ребят, спасибо за отклик! Продублирую ответ обоим. Мне скорей всего не нужен стейт по типу редакс, потому что это совсем не то. У меня есть просто сущность canvas. Эта сущность дает мне fabric js. У этого canvas уже есть куча методов. Мне просто нужны хэндлеры для объединения логики или создания своей логики с последовательным вызовом методов fabric. Это все я и могу легко сделать. Просто передав готовую сущность в класс тот же, который включает в себя множество методов. Но тут появилась сущность history, о которой должны знать все хэндлеры в классе том же. Если просто передать сущность history в класс, то ее можно использовать, но она будет иметь самое первое свое состояние, т.е. пустое. Скорей всего, я попросту не могут понять, как получать последнее свежее состояние history в своих хэндлерах.
Если так много действий, изменяющих стейт - проще будет использовать стейт менеджер, тот же redux например.
Если redux подключать не хочется, то можно вместо setState использовать useReducer. В этом случае хранить какую-то историю действий и следить за порядком выполнения хэндлеров будет проще.
Ребят, спасибо за отклик! Продублирую ответ обоим. Мне скорей всего не нужен стейт по типу редакс, потому что это совсем не то. У меня есть просто сущность canvas. Эта сущность дает мне fabric js. У этого canvas уже есть куча методов. Мне просто нужны хэндлеры для объединения логики или создания своей логики с последовательным вызовом методов fabric. Это все я и могу легко сделать. Просто передав готовую сущность в класс тот же, который включает в себя множество методов. Но тут появилась сущность history, о которой должны знать все хэндлеры в классе том же. Если просто передать сущность history в класс, то ее можно использовать, но она будет иметь самое первое свое состояние, т.е. пустое. Скорей всего, я попросту не могут понять, как получать последнее свежее состояние history в своих хэндлерах.