代码之家  ›  专栏  ›  技术社区  ›  jayarjo

如何用RecoilJS构造深层嵌套状态树?

  •  0
  • jayarjo  · 技术社区  · 6 年前

    如何用RecoilJS构造深层嵌套状态树?我应该把每一个分支都当作独立的原子还是别的什么?

    0 回复  |  直到 6 年前
        1
  •  3
  •   NoriSte    6 年前

    如果你不把结构分成原子, 你不会利用最重要的反冲功能

    相反,在原子和原子族(以及选择器和选择器族)中拆分数据可以让您充分利用反冲。当原子更新时,只有订阅了特定原子的组件才会重新渲染!


    原子和原子族之间有什么区别?为什么要同时利用它们而不仅仅是原子(最终是选择器族)如此重要?

    嵌套原子和原子族有一个共同点:它们允许您管理嵌套数据结构,例如,使用存储在原子中的里程数据:

    // carsMileage atom structure
    {
      teslaModel3: {
        miles: 50.000
      },
      chevroletCorvette: {
        miles: 100.000
      }
    }
    

    仅订阅的组件 carsMileage atom在atom更改时重新渲染,但不能有仅显示的组件 teslaModel3 的里程数,当 chevroletCorvette 的里程数更改(也不适用于选择器族)。而是一个仅包含里程数的atom族

    {
      miles: 50.000
    }
    

    通过具有两个键的atom系列进行管理( 特斯拉莫代尔3 雪佛兰克尔维特 特斯拉莫代尔3 里程数不会导致故障 ChevroletCorvetteData

    简单地说:atom系列的唯一缺点是反冲不能帮助你记住钥匙( 特斯拉莫代尔3 和 )你曾经存储数据。。。你必须把钥匙储存在另一个原子里,否则你就倒霉了。


    不要使用单个原子