javascript - Reactjs 组件`this.state` 未定义
问题描述
我是 reactjs 的新手,并试图制作一个组件。我设置this.state
,componentWillMount()
然后我调用一个方法:
componentWillMount() {
this.setState({ value: this.props.value || "0" });
this.changeCbState = this.changeCbState.bind(this);
this.changeCbState();
}
但在我的方法changeCBState
this.state
中是未定义的:
changeCbState() {
console.log(this.state.value)
}
错误:Uncaught TypeError: Cannot read property 'value' of null
解决方案
问题可能是您不会在构造函数中初始化状态,并且由于 this.setState 是异步的,因此在您尝试访问changeCbState
函数之前可能不会初始化状态。
此外,您在生命周期中编写的初始化代码也componentWillMount
需要进入,constructor
因为该componentWillMount
方法应该被弃用。
constructor(props) {
super(props);
this.state = {
value: this.props.value || "0"
}
this.changeCbState = this.changeCbState.bind(this);
this.changeCbState();
}
推荐阅读
- sql - 按两个表分组,然后加入它们
- python - 文本代码没有在我的 python 代码中添加任何字符串数据
- node.js - 我应该从节点(服务器端)还是在反应(客户端)调用 api?
- react-native - React Native 选项卡视图:如何防止所有选项卡在初始时加载
- maven - 具有不应继承的定义的父 pom
- python - 如何构造为每个类返回相同数量图像的批处理
- google-docs - 制作一个 Google Docs 链接以制作副本并自动将其共享到共享文件夹中?
- python - 从 HTML 传递 GET 参数并在 Django View 中接收
- tradingview-api - TradingView - 如何从图表中复制标签文本?
- typescript - 如何在打字稿中定义嵌套字典类型