我正在学习React,现在正试图实现使用上下文API的旧方法,但当我试图编译时,我得到一个错误。
上面写着:
TypeError: context is undefined. Version is 17.0.1
Test0.js
import React from 'react';
const Test0 = React.createContext();
export default Test0;
Test1.js
import React, { Component } from 'react';
import Test0 from './Test0';
class Test1 extends Component{
render(){
return (
<Test0.Consumer>
{context => (<p>This is {context.name}</p> )}
</Test0.Consumer>
);
}
}
export default Test1;
Test2.js
import React, { Component } from 'react';
import Test0 from './Test0';
import Test1 from './Test1';
class Test2 extends Component{
state = {
name: 'James',
age : 30
}
render(){
return (
<Test0.Provider
value={{
name : this.state.name,
age: this.state.age
}}
>
<Test1 />
</Test0.Provider>
);
}
}
export default Test2;
我然后渲染<Test1 />
在app.js
然后渲染
您需要渲染Test2
,因为您在那里定义了上下文提供程序。下面是完整工作代码的链接。
CODESANDBOX链接:https://codesandbox.io/s/context-api-issue-lqkv8
您正在使用Test1
组件,其中消耗Test0
,这是一个您假设提供值的上下文,但在Test0
中您不提供值。你在单独的组件Test2
中错误地实现了提供者,你不渲染所以Test0
不知道提供的值,它假设你没有定义上下文。