В редких случаях, когда вам нужна ссылка на другой элемент JSX в React, вы можете использовать ref
prop, например:
class Widget extends React.PureComponent {
example() {
// do something
}
render() {
...
<Widget ref={r => this.mywidget = r}/>
<OtherWidget onClick={e => this.mywidget.example()}/>
Здесь экземпляр Widget
сохраняется в this.mywidget
для последующего использования, и для него можно вызывать функцию example()
.
В интерфейсе материалов вы можете обернуть компоненты вокруг withTheme()
вызова , чтобы сделать тему доступной в их объектах:
export default withTheme()(Widget);
Однако, если это сделано, ref
получает экземпляр WithTheme
, а не Widget
. Это означает, что функция example()
больше не доступна.
Есть ли способ использовать ref
с компонентом, обернутым withTheme()
, чтобы к базовому объекту все еще можно было получить доступ таким же образом, как если бы withTheme()
не использовался?
Вот пример, демонстрирующий проблему. Строки 27 и 28 могут быть прокомментированы / не прокомментированы, чтобы видеть, что вещи терпят неудачу, только когда добавлен вызов withTheme()
.