首页 文章

使用Relay更新React状态

提问于
浏览
2

使用Relay,您可以像往常一样创建React组件:

class TodoApp extends React.Component {
  ...
}

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

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

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

这与Redux之类的通量实现不兼容(或似乎不兼容) . Redux有一个单一的全局状态对象,它也有更高阶的组件,可以将props传递给表示组件 . 所以我看不到Redux存储和Relay容器当前是如何共存的 .

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

3 回答

  • 0

    虽然我无法向您提供有关一起使用它们的建议,但是 technically you can definitely have several higher order components applied one after another:

    class TodoApp extends React.Component {
      // ...
    }
    
    TodoApp = connect(
      // ...
    )(TodoApp);
    
    TodoApp = Relay.createContainer(TodoApp, {
      // ...
    });
    
    export default TodoApp;
    

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

  • 0

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

    你可以加入讨论here

  • 5

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

    • 聊天组件( ChatComponent )是一个愚蠢的反应组件,它希望所有数据都作为道具 . 它还需要将redux dispatch 函数作为prop,以便在有人想要发送新消息时调度操作 . 这是一个'private'组件,由...包裹

    • ChatComponentRelay - 这将呈现 ChatComponent ,但它是一个Relay组件,它也连接到redux存储 . 它使用生命周期方法之一(而不是构造函数)将通过中继接收的数据分派到redux存储中 . 这是应用程序其余部分使用的组件,基本上只是底层dumb ChatComponent 的代理 . 它渲染 ChatComponent 传递来自redux商店的道具中的所有数据,以及redux dispatch 函数 .

相关问题