首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将事件处理程序作为参数传递给React中的组件

将事件处理程序作为参数传递给React中的组件
EN

Stack Overflow用户
提问于 2019-01-12 13:54:53
回答 1查看 978关注 0票数 0

我有一个关于向组件传递单击事件的问题。我收到一个错误,说我作为参数传递的函数不是计算时的函数。这是我的代码。

代码语言:javascript
复制
//Page.js

import { HeaderFrame, BodyFrame, FooterFrame } from './frames/index'

headerClicked = (event) => {
  let extractedText = this.extractContent(event.target.innerHTML);
  console.log(extractedText)
}

render() {
  return (
    <div className="Page">
      <label>
        <HeaderFrame headerClicked={(event) => this.headerClicked()}/>
      </label>
    </div>
  );
}

//HeaderFrame.js

import React from 'react';
import Frame, { FrameContextConsumer } from 'react-frame-component';

const HeaderFrame = (headerClicked) => (
<Frame class='headerBox' head={
   <link type='text/css' href='../css/HeaderBox.css' />
  }>
 <FrameContextConsumer>
  {
    ({document, window}) => {
      debugger; //Uncaught TypeError: headerClicked is not a function
      document.addEventListener("click", headerClicked, false);
      document.designMode = 'On';
      // Render Children
    }
  }
 </FrameContextConsumer>
</Frame>
);

export default HeaderFrame

导入/导出工作正常,实际上在我的调试器所在的时刻,控制台不知道如何处理headerClicked函数……

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 13:59:43

HeaderFrame的headerClicked是一个道具,它没有要传递的事件,所以你做的方式是不正确的。您需要像下面这样传递headerClicked,您可以在函数中访问该事件。

你只需要下面的改变就可以让它工作

变化

代码语言:javascript
复制
<HeaderFrame headerClicked={(event) => this.headerClicked()}/>

代码语言:javascript
复制
<HeaderFrame headerClicked={this.headerClicked}/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54157134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档