const Main = (props)=>{ var [somevar, setSomevar] = useState<number>(0); const SubCompOnent= (props)=>{ var [count, setCount] = useState<number>(0); useEffect(()=>{ console.log("SubComponent mounted!"); return ()=>{console.log("SubComponent dis mounted");}; }, [props]); return (<div> <div>count:{count}</div> <button OnClick={()=>setCount(count+1)}>count++</button> </div>); } return (<div> <div>somevar:{somevar}</div> <button OnClick={()=>setSomevar(somevar+1)}>somevar++</button> <SubComponent> </SubComponent> </div>); } 每次点击 somevar++,SubComponent 都会重新 mount 和 unmount ,而且 count 也会清零。 点击 count++不会导致重新挂载。
什么决定了重新挂载呢?这里的父子组件结构,并没有变化啊。
