Memo / Watch
优化 UI 渲染和订阅状态变化
Memo 组件
类似 React.memo
,你可以使用 Memo
包裹子树并将构建结果缓存起来。
只有当监听的值发生变化时,子树才会重新渲染,对于计算代价较高的组件渲染性能优化很有用。
<Memo watch={counterStore}>
{() => {
// ✅ 整个子树将被缓存,只有当 store 变化时才重新渲染
return <ExpensiveSubTree />;
}}
</Memo>
你也可以监听任何计算值并将其传递给子树使用。
<Memo
watch={() => ({
count: counterStore.value.count,
userName: userStore.value.name,
})}
>
{({ count, userName }) => <ExpensiveChart count={count} user={userName} />}
</Memo>
Watch 组件
类似 Memo
组件,但它不缓存子组件,会在状态变化时重新渲染。
当你想在指定状态变化时,重新渲染子树很有用。
<Watch watch={counterStore}>{(count) => <p>计数: {count}</p>}</Watch>
你也可以监听任何计算值并将其传递给子树使用。
<Watch
watch={() => ({
count: counterStore.value.count,
status: userStore.value.isOnline ? "在线" : "离线",
})}
>
{({ count, status }) => (
<div>
<span>计数: {count}</span>
<span>状态: {status}</span>
</div>
)}
</Watch>