【问题标题】:How to get data from the local graph?如何从本地图中获取数据?
【发布时间】:2016-11-15 07:06:54
【问题描述】:

我有显示分层数据的组件。它是一个递归数据结构——一个层次分类器。分类器中的每个类别都由子类别等组成。

这是它的游乐场:

Relay playground

我有一个以第三方 html 形式显示此分类器的组件。它用于选择一个类别。

在某个时间点,用户会从这个递归分类器中选择一个类别,而我必须获得导致当前级别的完整数据路径。我的意思是如果用户在层次结构的第 3 级选择一个类别,我必须返回这些数据:

[root cat id, root cat name],
[level 1 cat id, level 1 cat name],
[level 2 cat id, level 2 cat name]

因此,当我在级别 2 捕获组件内部拾取事件时,如何从 Relay 商店(来自本地图)获取根类别的完整路径?

【问题讨论】:

    标签: recursion reactjs relayjs


    【解决方案1】:

    这有一个 React 解决方案而不是 Relay 解决方案:如何访问树中给定节点的路径?我会合成一条路径,并将其传递给您的组件。

    const path = [
      // The elements of the passed-in path.
      ...this.props.path,
      // A new path element using the details from this level.
      [this.props.catId, this.props.catName],
    ];
    <MyNode path={path} onClick={() => alert(path)} />
    

    点击这里查看working example

    【讨论】:

    • 谢谢!你的答案是最好的!我是否正确地认为从本地缓存中获取数据的首选方式就像你说的那样?我的意思是 Relay 没有公开用于检查本地图的公共 API,使用 props 和合成数据结构总是更好?
    • 一般来说,数据应该自上而下流动;您不应该从子组件中爬上图表来了解有关您父母的任何信息。还有另一种实现,您可以在架构中公开path 字段,并在resolve() 方法中构建路径。当然,这会扩大网络响应的大小,因此现有的解决方案可能是最好的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2014-02-03
    • 2019-07-03
    • 2020-08-29
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多