首先升级 npm 包到 v2,例如:
npm install --save hox@latest
createModel
在 v2 中对应着 createGlobalStore
,因此你需要批量把 createModel
替换为 createGlobalStore
:
createModel(() => {// ...})// ⬇️createGlobalStore(() => {// ...})
同时,createGlobalStore
并不支持第二个额外的参数(在之前的 createModel
中,这个参数会被传递给 Hook 函数),但是不要担心,你可以直接自己包裹一层匿名函数,来实现同样的效果:
function useCounter(initial) {// ...}createModel(useCounter, 5)// ⬇️function useCounter(initial) {// ...}createGlobalStore(() => useCounter(5))
在 v2 版本的 hox 中,需要通过 HoxRoot
组件来收集和执行全局 Store,因此你需要在整个应用的最外层包裹一个 HoxRoot
:
<HoxRoot><App /></HoxRoot>
需要注意的是,在同一个浏览器页面上,只能同时渲染一个 HoxRoot。
useLazyModel
在 hox v2 中已被移除,并且目前没有可等效替代的函数,一般情况下,你可以通过局部 Store 来达到的同样的目的。
现在可以启动一下项目试试看看了,如果你按照上面的流程进行操作后,遇到了奇怪的问题,可以来 GitHub 仓库中提交 issue。