Size: a a a

React — русскоговорящее сообщество

2020 September 25

DA

David Arutiunian in React — русскоговорящее сообщество
Ок, нашёл варианты тут
Костыльно конечно, но походу по-другому никак
https://stackoverflow.com/questions/280389/how-do-you-find-out-the-caller-function-in-javascript
источник

А

Аскар in React — русскоговорящее сообщество
Можете подсказать как можно создать форму , с помощью хуков ?
источник

DC

Defina Corporation in React — русскоговорящее сообщество
David Arutiunian
Всем привет!
Допустим есть функция, объявленная статически в файле
Есть ли какая-нибудь возможность проверить функция вызвана в контексте или вне контекста реакта?
Смотря какой у вас подход. Вы пишите компоненты как константы для подключения "на лету", как функции или как классы?
Везде свои подходы и возможности. Костылей меньше будет если использовать компоненты как функции с хуками, тем более что сама документация на React это предлагает.
источник

DC

Defina Corporation in React — русскоговорящее сообщество
Аскар
Можете подсказать как можно создать форму , с помощью хуков ?
https://react-hook-form.com/
Не благодарите.
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Defina Corporation
Смотря какой у вас подход. Вы пишите компоненты как константы для подключения "на лету", как функции или как классы?
Везде свои подходы и возможности. Костылей меньше будет если использовать компоненты как функции с хуками, тем более что сама документация на React это предлагает.
Да, я использую функциональные компоненты с хуками. Но в данном случае задача чуть другая. Функция, которую я предоставил может использоваться как в функциональном компоненте, так и в статичном js коде (например для объявления статичных options какого-то селекта)
источник

DA

David Arutiunian in React — русскоговорящее сообщество
С использованием в реакт компоненте проблем нет, как в прочем и с использованием в статичном коде, но просто не хотелось бы постоянно второй аргумент прокидывать. Хочется инкапсулировать эту логику в саму функцию, чтобы она определяла вызвана она в компоненте или же вне, и в зависимости от этого возвращала мемоизированную или же обычную функцию соотвественно
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Попробую сделать через new Error().stack
источник

DC

Defina Corporation in React — русскоговорящее сообщество
David Arutiunian
Да, я использую функциональные компоненты с хуками. Но в данном случае задача чуть другая. Функция, которую я предоставил может использоваться как в функциональном компоненте, так и в статичном js коде (например для объявления статичных options какого-то селекта)
Если у вас проблемы с суперглобальными document и window
пишите чистый js в связке с useEffect
А начальные, стартовые или по умолчанию значения в useState
Если вы пытаетесь впихнуть jQuery в код, то и на суперглобальную $ есть вебхуки.
Но лучше не использовать, падает реактивность, да и кода больше
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Причём тут суперглобалы?
источник

DC

Defina Corporation in React — русскоговорящее сообщество
David Arutiunian
Причём тут суперглобалы?
Я вас не понял, извините. Используйте обёртку, тогда компоненту не нужно будет передавать пропсы, вы же знаете как делать обёртку ?
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Вы не поняли)
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Могу ещё раз попробовать
источник

DA

David Arutiunian in React — русскоговорящее сообщество
У вас есть хук useI18n
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Он возвращает мемоизированную функцию в случае если ВЫЗВАН в реакт компоненте, и обычную в случае если вызван в статичном коде
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Мы же не можем использовать useCallback вне реакта
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Вот и задача сводится к тому, как понять в функции, вызвана она в реакт компоненте или в статичном js коде
источник

DA

David Arutiunian in React — русскоговорящее сообщество
То есть вне реакт компонента
источник

BA

Bogdan Aleksandrovic... in React — русскоговорящее сообщество
David Arutiunian
Он возвращает мемоизированную функцию в случае если ВЫЗВАН в реакт компоненте, и обычную в случае если вызван в статичном коде
а как ты вызвал хук вне компонента?
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Короче я уже выход нашёл
Вот есть такая спека, которая в стандарт не вошла https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/arguments/caller
Но похоже можно обойтись new Error().stack
источник

DA

David Arutiunian in React — русскоговорящее сообщество
Bogdan Aleksandrovich
а как ты вызвал хук вне компонента?
Дак хук это же просто функция, ничто не мешает вызвать вне компонента его
источник