You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constOuter6V="var";constOuter6V=[1,2,3]constOuter6: React.FC<{v: string}>=React.memo(functionOuter6({ v }){console.log("Outer6",v);return(<div><div>Outer6 {v}</div></div>);});
字符变量 和默认 Memo 无依赖表现一致
数组/对象 每次父组件更新会重新渲染,返回了新的引用
如果想定义对象变量又不想触发重新渲染用 useMemo包裹即可
constOuter6V=useMemo(()=>{return{a: 1};},[]);
在组件外 Memo 无依赖 调用外部 方法
constOuter7Outer=()=>{console.log("c4Test");};constOuter7: React.FC=React.memo(functionOuter7({}){const[state,setstate]=useState("");console.log("Outer7");return(<div><div>Outer7 state {state}</div><buttononClick={()=>setstate(String(Date.now()))}>C4</button><buttononClick={()=>Outer7Outer()}>Fn</button></div>);});
React.memo
https://zh-hans.reactjs.org/docs/react-api.html#reactmemo
demo 代码都在这儿
默认情况
App Parent
一次默认组件 在组件内
默认组件 使用方式
Memo 在组件内
在组件内 无依赖 修改 useState
在组件外 默认组件 无依赖
在组件外 Momo 无依赖
在组件外 Memo useState 依赖
在组件外 Memo useState 依赖 , 内部拥有 useState
在组件外 Memo function 依赖 (在父级组件内定义)
应该是父级渲染导致方法重新更新/定义返回了新的方法 导致渲染(这里是猜测 但是大概应该就是这样),解决这个问题需要用 useCallback 包裹方法即可, 在依赖没有变动的情况下返回相同的方法
在组件外 Memo 变量依赖(在父级组件内定义)
如果想定义对象变量又不想触发重新渲染用 useMemo包裹即可
在组件外 Memo 无依赖 调用外部 方法
在组件外 Memo 依赖传入外部方法
在组件外 Memo 依赖传入 Object 数据
在组件外 无 Memo 无依赖 内部 useState 变动
在组件外 无 Memo 依赖 useState,内部 useMemo
在组件外 使用 ahooks useEventEmitter 测试
PureComponent
https://zh-hans.reactjs.org/docs/react-api.html#reactpurecomponent
The text was updated successfully, but these errors were encountered: