reactjs - React.js - 无法读取未定义的属性,即使上下文已绑定(从子调用父方法)
问题描述
我正在 React 中构建一个小型应用程序 -Job
当在子组件中单击条形图 (ApexCharts) 中的条时,尝试从我的父组件调用一个函数SummaryChart
。
自然地,我读到的方法是在 Job 中定义一个名为 的函数getSequenceView
,并将其通过一个 prop 传递给 alias 下的 Chart handleBarClick
,然后调用this.props.handleBarClick
fromSummaryChart
在父级中调用它。
父组件
class Job extends Component {
constructor(props)
{
super(props);
this.state = {
...
}
this.getSequenceView = this.getSequenceView.bind(this);
}
getSequenceView(config, event)
{
console.log(config.someData);
$('#help-modal').modal();
}
render()
{
return (
<SummaryChart
handleBarClick={this.getSequenceView}
/>
);
}
子组件
class SummaryChart extends Component {
constructor(props) {
super(props);
this.state = {
options: {
chart: {
events: {
dataPointSelection: function(event, chartContext, config) {
this.props.handleBarClick();
},
}
}
}
render() {
return (
<Chart
options={this.state.options}
series={this.state.series}
type="bar"
width="100%"
/>
);
}
}
我有一种感觉,因为我this.state.options
作为道具Chart
从 ApexCharts 传递给实际对象,当单击该栏时,事件从Chart
对象注册而不是,SummaryChart
也许这就是我收到错误的原因。
app.js:66798 未捕获类型错误:无法读取未定义的属性“handleBarClick”
解决方案
问题
在构造函数this.props
中尚未设置。
解决方案
访问传递给构造函数的道具。
constructor(props) {
super(props);
this.state = {
options: {
chart: {
events: {
dataPointSelection: function (event, chartContext, config) {
props.handleBarClick();
}
}
}
}
};
}
推荐阅读
- java - 从属性文件中读取 json 属性值
- android - FingerprintManager.isHardwareDetected() 在某些三星设备上返回 false
- ios - 我不能自动换行 UIlabel
- python-3.x - 如何在大文件中的字符串中grep相同的子字符串模式?
- django - 在 Django 中引用另一个数据库中的视图
- javascript - 画布 toBlob 质量
- java - 如何重构和减少这种复杂的逻辑,包括太多的 if-else
- python - WINDOWS 上的 Python flask 双栈(ipv4 和 ipv6)
- java - JOOQ 的 Maven 配置是否有任何架构文档?
- c++ - 链表未正确打印(链表的新功能)