相关疑难解决方法(0)

addEventListener vs onclick

addEventListener和之间有什么区别onclick

var h = document.getElementById("a");
h.onclick = dothing1;
h.addEventListener("click", dothing2);
Run Code Online (Sandbox Code Playgroud)

上面的代码一起存在于一个单独的.js文件中,它们都完美地工作.

javascript onclick addeventlistener

642
推荐指数
10
解决办法
50万
查看次数

在Shadow DOM中使用React Component时,单击事件不会触发

我有一个特殊情况,我需要使用Web组件封装React组件.设置似乎很直接.这是React代码:

// React Component
class Box extends React.Component {
  handleClick() {
    alert("Click Works");
  }
  render() {
    return (
      <div 
        style={{background:'red', margin: 10, width: 200, cursor: 'pointer'}} 
        onClick={e => this.handleClick(e)}>

        {this.props.label} <br /> CLICK ME

      </div>
    );
  }
};

// Render React directly
ReactDOM.render(
  <Box label="React Direct" />,
  document.getElementById('mountReact')
);
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="mountReact"></div>
Run Code Online (Sandbox Code Playgroud)

这样安装正常,点击事件有效.现在,当我在React Component周围创建一个Web Component包装器时,它正确呈现,但click事件不起作用.这是我的Web组件包装器:

// Web Component Wrapper
class BoxWebComponentWrapper extends HTMLElement {
  createdCallback() {
    this.el      = this.createShadowRoot();
    this.mountEl = document.createElement('div');
    this.el.appendChild(this.mountEl);

    document.onreadystatechange = () => {
      if (document.readyState …
Run Code Online (Sandbox Code Playgroud)

javascript web-component shadow-dom reactjs custom-element

20
推荐指数
3
解决办法
2925
查看次数