首先对糟糕的代码感到抱歉。我是 React 的新手,所以请原谅:P。在这里,我创建了 2 个按钮,“添加”和“更改假”。当我点击“添加”时,它不会重新渲染子组件,当我点击“更改假”时,它会重新渲染组件,因为我的依赖在 useMemo 中发生了变化,它会创建一个新的对象道具并将其发送给孩子. 但是我收到 useMemo 的警告,说它是不必要的依赖,尽管我需要依赖。我怎么能去那个警告消失。有一个更好的方法吗?
注意:我的子组件是一个虚拟组件。它对这些道具没有任何作用。
import Child from "./Child";
const Parent = () => {
const [count, setCount] = useState(0);
const fakeValue = useRef(10);
const randomProp = useMemo(() => {
return { val: fakeValue.current };
}, [fakeValue.current]);
const changeFake = () => {
fakeValue.current = fakeValue.current + 1;
setCount(count + 1);
};
return (
<>
<div>{count}</div>
<div>{fakeValue.current}</div>
<button onClick={() => setCount(count + 1)}>add</button>
<button onClick={() => changeFake()}>Change fake</button>
<Child randomProp={randomProp} />
</>
);
};
export default Parent;
输出链接:https: //i.stack.imgur.com/5spw1.png CodeSandbox 链接:https ://codesandbox.io/s/silly-pine-fzjw9?file=/src/
也许是一个愚蠢的问题。但我会感谢社区的一些反馈:)