одной вьюхе отображение ошибки, на второй вьюхе я эту самую ошибку ставлю.
Решил использовать для этого кастомные хуки.
использую хуки так:
в первом файле, где мне нужно получить состояние ошибки:
let errH = useError()
icon={!errH.error? a : b} //условные иконки
во второмм файле, где я хочу устанавливать этот самый стейт -
let err = useError()
onBlur={(val) => { err.setLogicError(true)}
В итоге, стейт не меняется, в самой функции поле error не изменяется.
Несколько вопросов:
1) где я ошибся
2) можно ли вообще реализовать то, что мне нужно через хуки, или надо использовать другой инструмент?
у вас два компонента, вы юзаете хук чтобы создавать ошибку из одного компонента, и показывать ее в другом, так?
да, я хотел бы с помощью хука имметь возможность устанавливать где-то ошибку. Она не из стейта, она очень аабстрактна) Наприммер, вот, хочу, чтобы по онблуру срабатывал этот хук, и на первом компоненте я узнавал, что во втором компоненте появилась ошибка
вам нужен контекст или другой способ стейт менеджмента чтобы шерить стейт, тот хук который вы написали создает новый инстанс стейта для каждого компонента, а не реюзает один и тот же стейт.
ой, точно, да, мне нужно создавать реюзабельный хук. А как это можно сделать?
тут вам нужен не хук, а засунуть этот стейт в контекст например, и шерить оттуда
а никак нельзя сделать это с помощью хуков? я не хочу использовать стейты для решения конкретно этой задачи) Можно ли как-то менять состояние переменной стетйа внутри функции, вызывая эту функцию из другого места, не используя стор для хранения? А хранить все как бы в хуке)
хук создаст новый инстанс стейта для компонента, шерить стейт из хука привычным способом не получится, можно конечно костыли с каким-нибудь localStorage вставлять, но сами понимаете, это последнее о чем стоит думать
Можно хранить информацию в стейте и прокидывать через контекст. Написать хук, в котором будет спрятан доступ к контексту — извлечение значения и функции, это значение меняющее. В любом компоненте-потомке провайдера контекста можно просто вызвать хук и он вернёт тебе пошаренное значение и функцию для изменения этого значения. А можно взять стейт-менеджер, в котором эта функциональность уже реализована за тебя
Обсуждают сегодня