reactjs - 如何在 React js 的其他模块中为类组件使用上下文
问题描述
当我在 Reactjs 中使用上下文时,通过使用钩子,我只能将“useContext”用于其他模块中的功能组件,但我想将它用于 --> 类组件 <-- 在其他模块中,但我不能这样做,并且在浏览器控制台我看到这个错误:==>>((
ReferenceError: Cannot access 'MyContext' before initialization
Module.MyContext
http://localhost:3000/static/js/main.chunk.js:12:101
Module../src/news.js
F:/0 React Js project/my-appfirst-app/src/news.js:21
))
我们有什么方法可以在其他模块中使用类组件吗?
这些是我的代码
父组件:
import React,{createContext,Component} from 'react';
import ReactDOM from 'react-dom';
import Roots from './news'
import * as serviceWorker from './serviceWorker';
export let MyContext=createContext();
class Show extends Component{
render(){
return(
<MyContext.Provider value={{name:'ali',family:'mohammady',done:'false'}} >
<div className='container-main'>
<Roots />
</div>
</MyContext.Provider>
)
}
}
ReactDOM.render(<Show />, document.getElementById('root'));
这个子模块:
import React,{Component} from 'react';
import {MyContext} from './index'
class Roots extends Component{
static contextType = MyContext;
render(){
return(
<>
<p>{console.log(this.context)}</p>
</>
)
}
}
export default Roots;
如果我将子组件放在父组件中,我想知道如何处理这些代码!??
解决方案
您需要导出然后从上下文中导入消费者才能像那样使用它
export let MyContext=createContext();
export const MyContextConsumer = MyContext.Consumer
然后导入该消费者并使用它
import React,{ Component } from 'react';
import { MyContextConsumer } from './index'
class Roots extends Component{
render(){
return(
<MyContextConsumer>
{value => <p>{console.log(value)}</p>}
</MyContextConsumer>
)
}
}
推荐阅读
- python - 使用同一数据框的特定列作为参考同时填充多列中的 NaN 值的最佳方法
- netty - 为什么如果 CompositeByteBuf 中的组件数量超过'maxNumComponents',Netty 的 CompositeByteBuf 会自动合并
- c# - Visual Studios 查询问题,无法在 system.double 和 system.string 上执行 = 操作?
- html - 如何同时固定背景效果和位置
- c# - C#停止将自定义属性应用于类
- python - 我相信,Heroku app module not found error with pickle module in python
- java - 无法使用“.setAnnotatedClasses()”将类映射到没有 xml 的 Hibernate 获取“2QuerySyntaxException:FileEntity 未映射”错误
- java - 如何为字符串到文件句柄的映射创建清洁器?
- python - 使用 pandas 替换部分字符串替换
- html - 用空格包装锚文本(不是分词)