hox
hox copied to clipboard
在Provider外部设置children的属性,children不更新
如果在Provider外部设置children的属性,因为IsolatorInner和StoreExecutor使用memo,导致children不更新。即使设置了memo: false。
重现Repo:https://github.com/ousiri/hox-vite-demo 重现步骤:
- npm i
- npm run dev
- 访问 http://127.0.0.1:5173/
- 点击"click to change",会发现下面的UserInfo数据不更新 关键代码:src/App.tsx
const [useUserStore, UserStoreProvider] = createStore(() => {
return {}
}, { memo: false });
const UserInfo: FC<{ name: string }> = ({ name }) => {
return <div>{name}</div>
}
function App() {
const [name, setName] = useState('Demo')
return (
<div className="App">
<UserInfo name={name} /> // 可以正常更新
<button onClick={() => setName('Demo2')}>click to change</button>
<UserStoreProvider>
<UserInfo name={name} /> // 点击后不更新
</UserStoreProvider>
</div>
)
}