#reactjs
Вопрос:
В моем приложении React у меня есть фиксированная панель навигации и прокручиваемый div. Прокручиваемый div содержит все содержимое приложения.
Я хочу прокрутить представление в некоторых местах, но если я использую window.scrollTo
его, он не работает, так как прокручиваемый элемент-это div. Я придумал решение, которое заключается в том, чтобы назначить ссылку с useRef
помощью крючка и сохранить эту ссылку как свойство окна. Затем, когда мне это нужно, я просто делаю window.ref?.current?.scrollTo
и выполняю свою работу.
Вопрос в том, можно ли это сделать? Нарушает ли это какие-либо из правил крючков? Я знаю о существовании forwardRef
, но действительно ли это необходимо здесь?
Также обратите внимание, что элемент, запускающий прокрутку, не является прямым потомком этого div, поэтому мне пришлось бы использовать forwardRef много раз.
Комментарии:
1. Вероятно, было бы лучше использовать контекст React для хранения значения ref и предоставления его обратно в приложение. «Это нормально-спасать глобалы?» Это может быть, если вы знаете, что делаете, но это обычно считается анти-шаблоном, и его следует избегать, если это возможно.
2. Не могли бы вы привести пример? Я проверил документы reactjs.org/docs/hooks-reference.html#usecontext и как приложение, так и кнопка темы должны иметь доступ
ThemeContext
. Итак, если, как в моем случае, они находятся в разных файлах, как я могуThemeContext
установить ссылку, созданную внутри приложения, и передать ее в ThemedButton (дочерний компонент)3. reactjs.org/docs/context.html API контекста React-это не то же самое, что крючки React, они решаются для разных вариантов использования.