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++不会导致重新挂载。
什么决定了重新挂载呢?这里的父子组件结构,并没有变化啊。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.