首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将事件添加到克隆组件中

将事件添加到克隆组件中
EN

Stack Overflow用户
提问于 2019-03-05 17:47:55
回答 3查看 4.5K关注 0票数 1

我使用以下方法克隆组件并修改其支持。

代码语言:javascript
复制
    const clone = React.cloneElement(<BallComponent>, {
        key: new Date().getTime()
    });

如何向此克隆组件添加单击事件,并在单击其类时调用其类中的函数?我在没有运气的情况下尝试了以下几种方法:

代码语言:javascript
复制
    const clone = React.cloneElement(<BallComponent>, {
        key: new Date().getTime()}
        onClick: alert('test');
    });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-05 18:06:41

你正在关闭道具对象卷曲支撑之前。另外,向onClick传递一个函数,而不是在那里调用警报,当组件挂载时,警报将正确执行。

代码语言:javascript
复制
const clone = React.cloneElement(<BallComponent>, {
    key: new Date().getTime()
    onClick: () => { alert('test') }
});

对于React.cloneElement的使用,这是一个很小的例子。

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom";

class Demo extends React.Component {
  render() {
    return <p onClick={this.props.click}>This is Demo. Click me.</p>;
  }
}

function App() {
  const clone = React.cloneElement(<Demo />, {
    click: () => {
      alert("You clicked Demo :)");
    }
  });

  return (
    <div className="App">
      {clone}
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
票数 1
EN

Stack Overflow用户

发布于 2019-03-05 18:16:27

使用下面的代码片段,它将工作。

代码语言:javascript
复制
var Clone = React.cloneElement(<BallComponent/>, {
      key: new Date().getTime(),
      onClick: () => { alert('test') }
    });

P.S.-确保BallComponent有onClick,除非警报不会开火。

票数 1
EN

Stack Overflow用户

发布于 2019-03-05 18:07:35

在该示例中,您正在执行alert('test')并将其返回值分配给onChange,在本例中为undefined

您需要的是传递一个函数:

代码语言:javascript
复制
 const clone = React.cloneElement(<BallComponent>, {
        key: new Date().getTime()}
        onClick: () => { alert('test') };
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55008734

复制
相关文章

相似问题

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