Я пытаюсь создать компонент высокого порядка ReactJS с использованием синтаксиса ES6. Вот моя попытка:
export const withContext = Component =>
class AppContextComponent extends React.Component {
render() {
return (
<AppContextLoader>
<AppContext.Consumer>
{context => <Component {...props} context={context} />}
</AppContext.Consumer>
</AppContextLoader>
);
}
};
Здесь AppContextLoader
получает контекст из базы данных и предоставляет его контексту:
class AppContextLoader extends Component {
state = {
user: null,
};
componentWillMount = () => {
let user = databaseProvider.getUserInfo();
this.setState({
user: user
});
};
render = () => {
return (
<AppContext.Provider value={this.state}>
{this.props.children}
</AppContext.Provider>
);
};
}
export default AppContextLoader;
И использование:
class App extends Component {
static propTypes = {
title: PropTypes.string,
module: PropTypes.string
}
render = () => {
return (
withContext(
<Dashboard
module={this.props.module}
title={this.props.title}
/>
);
export default App;
По какой-то причине мой обернутый компонент (Dashboard
) не получает моего свойства context
, только исходные (title
и module
).
Как правильно написать HOC, используя синтаксис ES6?