我在React中看到的所有新上下文API示例都在一个文件中,例如https://github.com/wesbos/React-Context.
当我试图让它跨多个文件工作时,我显然遗漏了一些东西.
我希望制作一个GlobalConfiguration
组件(下面MyProvider
个)来创建和管理上下文中的值,为从中读取的任何子组件(下面MyConsumer
个)做好准备.
应用程序.js
render() {
return (
<MyProvider>
<MyConsumer />
</MyProvider>
);
}
供应商.js
import React, { Component } from 'react';
const MyContext = React.createContext('test');
export default class MyProvider extends Component {
render() {
return (
<MyContext.Provider
value={{ somevalue: 1 }}>
{this.props.children}
</MyContext.Provider >
);
}
}
消费者js
import React, { Component } from 'react';
const MyContext = React.createContext('test');
export default class MyConsumer extends Component {
render() {
return (
<MyContext.Consumer>
{(context) => (
<div>{context.state.somevalue}</div>
)}
</MyContext.Consumer>
);
}
}
不幸的是,这在控制台中失败:
消费者js:12 Uncaught TypeError: Cannot read property 'somevalue' of undefined
我完全没有抓住重点吗?是否有文档或示例说明这是如何跨多个文件工作的?