Если вы используете response 16.6.0 или более поздней версии и используете ровно один контекстный потребитель, то самый простой подход - использовать contextType
(обратите внимание, что это единственное, а не множественное число).Это заставит реагировать сделать значение доступным для this.context
, которое затем можно использовать в хуках жизненного цикла.Например:
// In some other file:
export default MyContext = React.createContext();
// and in your component file
export default class MyComponent extends Component {
static contextType = MyContext;
componentDidMount() {
const { actions } = this.context;
actions.setMyState(true);
}
// ... etc
}
Если вы используете более старую версию и, следовательно, не можете использовать contextType
, или если вам нужно получить значения из нескольких контекстов, вам вместо этого нужно обернуть свой компонент вдругой компонент, и передать контекст через проп.
// In some other file:
export default MyContext = React.createContext();
// and in your component file
class MyComponent extends Component {
static contextType = MyContext;
componentDidMount() {
const { actions } = this.props;
actions.setMyState(true);
}
// ... etc
}
export default props => (
<MyContext.Consumer>
{({ actions }) => (
<MyComponent actions={actions} {...props} />
)}
</MyContext.Consumer>
);