169 похожих чатов

Всем привет! У меня глупый вопрос по хукам. Следующий кейс: На

одной вьюхе отображение ошибки, на второй вьюхе я эту самую ошибку ставлю.
Решил использовать для этого кастомные хуки.

использую хуки так:

в первом файле, где мне нужно получить состояние ошибки:
let errH = useError()
icon={!errH.error? a : b} //условные иконки

во второмм файле, где я хочу устанавливать этот самый стейт -

let err = useError()
onBlur={(val) => { err.setLogicError(true)}

В итоге, стейт не меняется, в самой функции поле error не изменяется.

Несколько вопросов:
1) где я ошибся
2) можно ли вообще реализовать то, что мне нужно через хуки, или надо использовать другой инструмент?

10 ответов

4 просмотра

у вас два компонента, вы юзаете хук чтобы создавать ошибку из одного компонента, и показывать ее в другом, так?

Nikita- Автор вопроса
Stanislav
у вас два компонента, вы юзаете хук чтобы создават...

да, я хотел бы с помощью хука имметь возможность устанавливать где-то ошибку. Она не из стейта, она очень аабстрактна) Наприммер, вот, хочу, чтобы по онблуру срабатывал этот хук, и на первом компоненте я узнавал, что во втором компоненте появилась ошибка

Nikita
да, я хотел бы с помощью хука имметь возможность у...

вам нужен контекст или другой способ стейт менеджмента чтобы шерить стейт, тот хук который вы написали создает новый инстанс стейта для каждого компонента, а не реюзает один и тот же стейт.

Nikita- Автор вопроса
Stanislav
вам нужен контекст или другой способ стейт менеджм...

ой, точно, да, мне нужно создавать реюзабельный хук. А как это можно сделать?

Nikita
ой, точно, да, мне нужно создавать реюзабельный х...

тут вам нужен не хук, а засунуть этот стейт в контекст например, и шерить оттуда

Nikita- Автор вопроса
Stanislav
тут вам нужен не хук, а засунуть этот стейт в конт...

а никак нельзя сделать это с помощью хуков? я не хочу использовать стейты для решения конкретно этой задачи) Можно ли как-то менять состояние переменной стетйа внутри функции, вызывая эту функцию из другого места, не используя стор для хранения? А хранить все как бы в хуке)

Nikita
а никак нельзя сделать это с помощью хуков? я не х...

хук создаст новый инстанс стейта для компонента, шерить стейт из хука привычным способом не получится, можно конечно костыли с каким-нибудь localStorage вставлять, но сами понимаете, это последнее о чем стоит думать

Nikita
да, я хотел бы с помощью хука имметь возможность у...

Можно хранить информацию в стейте и прокидывать через контекст. Написать хук, в котором будет спрятан доступ к контексту — извлечение значения и функции, это значение меняющее. В любом компоненте-потомке провайдера контекста можно просто вызвать хук и он вернёт тебе пошаренное значение и функцию для изменения этого значения. А можно взять стейт-менеджер, в котором эта функциональность уже реализована за тебя

Похожие вопросы

Обсуждают сегодня

@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
а вы в курсе, что Initialize() не работает? var arr123: array[0..123] of Byte; ... Initialize(arr123, SizeOf(arr123));
Iluha Companets
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
что читать по делфи?вообще 0 в нем
fd dsds
9
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
const dirname = new URL((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.src || new UR...
Kirill Shaplyko
4
Карта сайта