【发布时间】:2021-03-08 05:37:40
【问题描述】:
所以,我猜想当 useState 更新时,父组件不会重新渲染子组件。 但是组件应该在使用 useState 时自动重新渲染,对吗? 或者我错过了什么......
index.js
import { useEffect, useState, useRef } from "react";
import Clicking from "./clicking";
export default function IndexPage() {
const parentBtn = useRef(null);
const [clicks, setClicks] = useState(0);
useEffect(() => {
console.log("Clicks: ", clicks);
if (null !== parentBtn.current) {
parentBtn.current.addEventListener("click", () => setClicks(clicks + 1));
}
}, [clicks]);
return (
<div>
<p>Clicks number : {clicks}</p>
<Clicking clicks={clicks} setClicks={setClicks} />
<button ref={parentBtn}>Parent button</button>
</div>
);
}
clicking.js
import { useEffect, useRef } from "react";
const Clicking = ({ clicks, setClicks }) => {
const childBtn = useRef(null);
useEffect(() => {
childBtn.current.addEventListener("click", () => setClicks(clicks + 1));
}, []);
return <button ref={childBtn}>Child button</button>;
};
export default Clicking;
有人知道怎么解决吗?
这里是案例的代码框:https://codesandbox.io/s/pensive-sun-9993d
感谢您的帮助!
【问题讨论】:
标签: reactjs components rendering next.js use-state