小编jos*_*nvu的帖子

在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
查看次数