无法获取未定义或空引用的属性“测试”
Unable to get property 'test' of undefined or null reference
我正在使用 ES6 和 React,引用似乎没有在玩球。
export default class App extends React.Component {
test() {
console.log(React.refs.test);
}
render() {
return (
<div className="pure-g">
<Nav>
<NavButton onClick={this.test}>Test</NavButton>
</Nav>
<Map lat="53.15" lng="-0.5" zoom="9" />
<SearchMenu ref="test" />
</div>
);
}
}
我是否错误地使用了引用?
另一方面,页面加载时突然发生了我的onClick事件。这是我的按钮组件。
export default class NavButton extends React.Component {
render() {
return (
<li className="pure-menu-item" onClick={this.props.onClick}>
<a className="pure-menu-link">{this.props.children}</a>
</li>
);
}
}
引用在
组件实例上可用,而不是静态地在React
本身上可用。您的参考文献应该由this.refs.test
而不是React.refs.test
引用。这给您的示例带来了另一个问题 - 不会使用正确的上下文调用点击事件回调。您可以通过绑定传递到按钮组件的函数来解决此问题:
export default class App extends React.Component {
test() {
console.log(this.refs.test);
}
render() {
return (
<div className="pure-g">
<Nav>
<NavButton onClick={this.test.bind(this)}>Test</NavButton>
</Nav>
<Map lat="53.15" lng="-0.5" zoom="9" />
<SearchMenu ref="test" />
</div>
);
}
}
将<NavButton />
更改为此
<NavButton onClick={this.test.bind(this)}>Test</NavButton>
现在,测试函数中的this
将是组件。
test() {
console.log(this); //this will be your App Component
}
至于为什么您的点击在加载时触发,我会确保您实际上不会意外调用 onClick 函数:
this.props.onClick()
而不是this.props.onClick
相关文章:
- 技术测试HTML中非常奇怪的名称属性
- 类型错误:无法读取未定义的属性“apply”,在测试中使用 javascript apply
- Javascript个性测试使用'这'和data-*属性
- Ionic V2和Cordova插件-未捕获类型错误:无法设置属性'测试'为null
- AngularJS单元测试指令's属性值
- TypeError:无法读取属性'那么'在使用Karma测试AngularJS控制器时未定义的
- 角度单元测试:如何在没有范围的情况下测试控制器属性
- 如何使用Ramda通过“where”比较测试对象中的属性值
- 使用笑话对打字稿类进行单元测试(“无法读取 null 的属性'__extends'”)
- 测试是否对 ng-show 属性可见
- 谷歌浏览器测试版是否支持使用webkitdirectory属性上传文件
- 我应该测试返回的对象作为一个整体还是单独测试其属性
- 对象属性的 JavaScript 测试
- 无法获取未定义或空引用的属性“测试”
- 如何使用 Wolfpack.js 测试我的 Sails.js 模型的唯一电子邮件属性
- 卡斯珀斯的测试属性
- 如何测试我的 json 的任何属性是否具有特定的子属性,没有循环
- Qunit测试属性存在于对象中
- 如何针对表格进行测试's”;input.占位符”;JavaScript函数的属性
- 在JavaScript中测试元素的样式属性和css值之间有区别吗