使用Relay

时间:2015-12-04 22:49:24

标签: javascript reactjs redux relay graphql

使用Relay,您可以照常创建一个React组件:

class TodoApp extends React.Component {
  ...
}

然后将组件包装在Relay容器中:

export default Relay.createContainer(TodoApp, {
  ...
});

Relay容器将使用GraphQL获取数据,然后更新状态。这是一个更高阶的组件,然后这个状态作为道具传递给它的子组件。

这并不是像Redux这样的通量实现兼容(或者似乎没有)。 Redux有一个单一的全局状态对象,它也有更高阶的组件,可以将props传递给表示组件。所以我不知道Redux存储和Relay容器当前是如何共存的。

那么我们应该如何更新不是来自数据库的状态呢?这个状态应该如何通过Relay进行管理?

3 个答案:

答案 0 :(得分:5)

虽然我无法向您提供有关一起使用它们的建议,但从技术上讲,您绝对可以依次应用几个更高阶的组件:

string cs = "Data Source=(LocalDB)\v11.0;"+
        "AttachDbFilename=C:\Users\Mani\Desktop\DOT NET\Projects\"+
        "TestDatabase\TestDatabase\Contact.mdf;"+
        "Integrated Security=True";

我不确定这有多大意义,但它很容易实现。

答案 1 :(得分:0)

如果你使用Relay容器,这些东西仍在讨论中,Redux和Relay的当前状态可能不太适合。

您可以加入讨论here

答案 2 :(得分:0)

我在聊天应用程序中完成了以下操作:

  1. 聊天组件(ChatComponent)是一个愚蠢的反应组件,它希望所有数据都作为道具。它还需要redux dispatch函数作为prop,以便在有人想要发送新消息时调度操作。这是一个私密的'组件并由...包裹。
  2. ChatComponentRelay - 这会呈现ChatComponent,但它是一个Relay组件,它也连接到redux存储。它使用生命周期方法之一(构造函数)将通过中继接收的数据分派到redux存储中。这是应用程序其余部分使用的组件,基本上只是底层哑巴ChatComponent的代理。它呈现ChatComponent从redux商店传递其道具中的所有数据,以及还有redux dispatch函数。