Итак, у меня есть BaseComponent.jsx
, который я распространяю на многие из моих компонентов. Это отлично работает.React: как получить доступ к базовому классу из компонентов более высокого порядка
class BaseComponent extends React.Component {
constructor(props){
super(props)
this.something = true
}
}
class OtherComponent extends BaseComponent {
constructor(props){
super(props)
console.log(this.something) // true
}
}
Но теперь мне нужно использовать withRouter(component)
из react-router
который оборачивает ваш компонент в более высоком компоненте порядка и украшающей ваш класс.
Так я это сделать:
class OtherComponent extends BaseComponent {
constructor(props){
super(props)
console.log(this.something) // undefined
}
}
export default withRouter(OtherComponent)
Проблема заключается в том, что теперь я не могу получить доступ к свойствам от BaseComponent
и тех, вернуть undefined
.
Как это решить, чтобы я мог создать HoC и в то же время получить доступ к свойствам базового класса?
Я не вижу такого же поведения. Я создал скрипку на основе вашего примера, и она корректно записывает 'true'. Добавьте, что он должен работать так, как вы описали, и эта сценария иллюстрирует, поскольку HoC не изменяют компонент, который они составляют. https://jsfiddle.net/okpLvu3e/ – ryanjduffy
Эй, @ RyanDuffy, этот простой пример работает, но когда вы начинаете добавлять детей и т. д., это не так. Проверьте это: https://github.com/reactjs/react-router/issues/3514 Они просто не рекомендуют расширять React.Component. – Pier
Можете ли вы достичь того, чего хотите с составом компонентов? Подразделение не рекомендуется при разработке компонентов React. – loganfsmyth