Javascript React.js“;这";在渲染函数中未定义
我是reactjs新手,创建了用于测试的组件。 这是我的密码Javascript React.js“;这";在渲染函数中未定义,javascript,reactjs,Javascript,Reactjs,我是reactjs新手,创建了用于测试的组件。 这是我的密码 class TestComponent extends React.Component { A(){ //content here } B() { //content here } render() { let ts = true; if(ts==true){ submenu_items.push(&l
class TestComponent extends React.Component {
A(){
//content here
}
B() {
//content here
}
render() {
let ts = true;
if(ts==true){
submenu_items.push(<NavItem glyph='icon-fontello-search' eventKey={3} onClick={::this.B} name={B}/>);
} else {
submenu_items.push(<NavItem glyph='icon-fontello-gauge' eventKey={4} name={application} />);
}
return (
<div>
<div className='sidebar-nav-container'>
<Nav style={{marginBottom: 0}} ref={(c) => this._nav = c}>
{submenu_items}
<NavItem glyph='icon-ikons-logout' href='#' onClick={::this.A} name='A' />
</Nav>
</div>
</div>
);
}
}
类TestComponent扩展了React.Component{
(){
//满足于此
}
B(){
//满足于此
}
render(){
设ts=true;
如果(ts==true){
子菜单_items.push();
}否则{
子菜单_items.push();
}
返回(
这个。_nav=c}>
{子菜单_项}
);
}
}
正如您在这里看到的,我在组件中创建了两个函数
我触发了两个handleClick事件
一个位于返回函数{::this.A}
内部,另一个位于返回函数{::this.B}
不幸的是,A函数被完美触发,但B未被触发
它显示错误“TypeError:无法读取未定义的属性“B”
如何修复此问题?我认为子菜单\u items.push正在重击{this}。这将成为子菜单项,而不是react组件 您可以在该语句之前将其别名为:
if(ts==true)
{ var thisB = ::this.B;
submenu_items.push(<NavItem glyph='icon-fontello-search' eventKey={3} onClick={thisB} name={B}/>); }
if(ts==true)
{var thisB=::this.B;
子菜单_items.push();}
你确定name={B}
?单击时是否有类型错误?是。不在乎名字。您可以将name重置为const,即name=“B”好吧,您正在使用ES7语法进行绑定,它应该可以正常工作,但是。。。您可以通过以下方式尝试旧的ES5方法:this.A.bind(this)或ES6匿名函数:()=>this.A()来隔离问题吗?如果您执行以下操作,会怎么样:this.A而不是::this.B
如果我尝试::this.A而不是this.B也会显示未定义的错误我认为原因是正确的,但不是解决方案,这会中断推送(因为它会尝试将其推送到组件)我相信你是对的@Icepickle。在这种情况下,别名是唯一的选择吗?我认为子菜单_items.push();
不会创建函数上下文。它只是一个对象文本。URL:t.co/kcNg5Uypzjif(ts==true){var thisB=::this.B;子菜单_items.push()}