繁体   English   中英

无法在反应中使用 javascript 读取 null 的属性“addEventListener”?

[英]Cannot read property 'addEventListener' of null using javascript in react?

I am trying to use native javascript in react to bind event.Actually I am getting some HTML from server.I am using dangerouslySetInnerHTML to set HTML.Now I want to bind a click event in incoming HTML from server here is my code https:/ /codesandbox.io/s/angry-shadow-1c4v8?file=/src/App.js

 useEffect(() => {
    const alertFunc = function () {
      alert("-----");
    };
    document.querySelector(".btn").addEventListener("click", alertFunc, false);
    // Specify how to clean up after this effect:
    return function cleanup() {
      document
        .querySelector(".btn")
        .removeEventListener("click", alertFunc, false);
    };
  });

这个问题是因为您的模板 - <button className="btn">set countor </button>正在重新设计,如下所示。

在此处输入图像描述

因此,如果您尝试使用 class 查询选择器访问,它将返回未定义。 您可以使用class代替className

 return {
    __html: '<button class="btn">set countor </button>'
  };

工作代码 - https://codesandbox.io/s/brave-meadow-qitjb?file=/src/App.js:87-157

这是因为您的 HTML 不是 HTML。 这是 JSX。 className是一个仅限 JavaScript 的属性。

代替:

<button className="btn">set countor </button>

你需要:

<button class="btn">set counter</button>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM