父子组件都使用memo,兄组件切换显示,弟组件重新渲染,memo为啥失效?-灵析社区

复古直男

父组件: {isView && } 子组件: useEffect(() => { console.log('渲染了'); }, []); 父组件和子组件都是用了memo:![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241130/83e384f16e6773ab5aae538527842151.png),切换isView,理应ImgShow组件不重新渲染,但是isView切换,都会打印“渲染了”,memo感觉失效了,这是为什么啊?求大佬指教 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241130/1ef5e12414f4b3a1a7cfb1b01284d9e0.png)

阅读量:13

点赞量:0

问AI
请把 App 组件内部定义的其他组件全部提取出去 单独定义,因为 app更新 这些函数都会重新定义 import "./styles.css"; import { memo, useEffect, useState } from "react"; export default function App() { const [isView, setIsView] = useState(false); useEffect(() => { console.log("渲染1"); }); return ( ); } const Test = memo(() => { useEffect(() => { console.log("渲染2"); }); return 测试1111111; }); const ImgShow = memo(({setIsView , isView}) => { useEffect(() => { console.log("渲染3"); }); return ( { setIsView(!isView); console.log(5555555, isView); }} > ); });