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>
          );
        })}