Javascript Can';React中的t bind回调函数
我正在尝试调用父组件中的回调函数,该函数在子组件中触发。我已经尝试了不同的绑定方式,但仍然无法让它工作。我总是犯这个错误Javascript Can';React中的t bind回调函数,javascript,reactjs,Javascript,Reactjs,我正在尝试调用父组件中的回调函数,该函数在子组件中触发。我已经尝试了不同的绑定方式,但仍然无法让它工作。我总是犯这个错误 Cannot read property 'logMessage' of undefined 我的父母 logMessage() { console.log("logMessage was called"); } return( <div> <h1>Blogs</h1> {this
Cannot read property 'logMessage' of undefined
我的父母
logMessage() {
console.log("logMessage was called");
}
return(
<div>
<h1>Blogs</h1>
{this.state.campaigns.map(function(blog) {
return (
<div key={blog._id}>
<CampaignCard blog={blog} callBack={() => this.logMessage()} />
</div>
);
})}
<Link to="/campaigns/add">
<button>Add Blog</button>
</Link>
</div>
);
我可以看到回调函数已被调用,但它似乎仍然没有引用正确的位置。您需要在父级中绑定该函数:
constructor(props) {
super(props);
this.logMessage = this.logMessage.bind(this);
}
您需要在父级中绑定函数:
constructor(props) {
super(props);
this.logMessage = this.logMessage.bind(this);
}
有两种选择
logMessage = () => {
console.log("logMessage was called");
}
或
有两种选择
logMessage = () => {
console.log("logMessage was called");
}
或
对地图使用箭头功能:
{this.state.campaigns.map((blog) => {
return (
<div key={blog._id}>
<CampaignCard blog={blog} callBack={() => this.logMessage()} />
</div>
);
})}
{this.state.magnities.map((博客)=>{
返回(
this.logMessage()}/>
);
})}
否则,
此
将引用映射
回调上下文。对映射使用箭头函数
:
{this.state.campaigns.map((blog) => {
return (
<div key={blog._id}>
<CampaignCard blog={blog} callBack={() => this.logMessage()} />
</div>
);
})}
{this.state.magnities.map((博客)=>{
返回(
this.logMessage()}/>
);
})}
否则,
this
引用了map
回调上下文。是否在组件的构造函数中绑定了logMessage
?只需使用函数return logMessage=()=>{console.log(“works”);}如果忘记绑定map回调方法,也可以在那里使用arrow函数,如下所示:{this.state.activities.map((blog)=>{..}
是否在组件的构造函数中绑定了logMessage
?只需使用函数return logMessage=()=>{console.log(“works”);}如果忘记绑定映射回调方法,也可以在那里使用arrow函数,如下所示:{this.state.activities.map((blog)=>{..}
奇怪的是,他没有在地图上使用胖箭头,但他在回调中使用了。@MuratK。我在理解箭头绑定时遇到了一些问题,但我想我现在理解了。@MuratK。是的,如果他在地图上也使用箭头,那就可以了。奇怪的是,他没有在地图上使用胖箭头,但他在回调中使用了。@MuratK。我有一些问题莱姆理解箭头绑定,但我想我现在明白了。@MuratK。是的,如果他在地图中也使用箭头,那就可以了。
{this.state.campaigns.map((blog) => {
return (
<div key={blog._id}>
<CampaignCard blog={blog} callBack={() => this.logMessage()} />
</div>
);
})}