您能帮助如何在不使用react - onClick attribute
的情况下在react-project
中添加click
事件侦听器吗。我只想使用本机javascript。
我试过像这个
document.addEventListener("DOMContentLoaded", function (event) {
console.log("====");
console.log(document.querySelector(".btn"));
document.querySelector(".btn").addEventListener(
"click",
function () {
alert("-----");
},
false
);
});
它不起作用,警报没有显示。你能帮我哪里做错了吗。
https://codesandbox.io/s/angry-shadow-1c4v8?file=/src/App.js:76-340
我知道使用react we can acheive this but I don't want to use reactjs click event
时,我想使用本机javascript并更新状态
以下解决方案在我使用危险时不起作用插入HTML
这是我的代码https://codesandbox.io/s/angry-shadow-1c4v8?file=/src/App.js
您必须在React Hooks 中注册事件侦听器
试试这个
import React, { useEffect, useState, useRef } from "react";
export default function App() {
const [counter, setCounter] = useState(0);
const buttonEl = useRef(null);
useEffect(() => {
console.log(counter);
}, [counter]);
useEffect(() => {
const alertFunc = function () {
alert("-----");
}
const buttonRef = buttonEl.current;
buttonRef.addEventListener(
"click",
alertFunc,
false
);
// Specify how to clean up after this effect:
return function cleanup() {
buttonRef.removeEventListener("click", alertFunc, false)
};
})
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<button className="btn" ref={buttonEl}> set countor</button>
</div>
);
}
我在挂钩中注册侦听器,当组件卸载时,我会删除侦听器