使用Relay,您可以像往常一样创建React组件:
class TodoApp extends React.Component {
...
}
然后将组件包装在Relay容器中:
export default Relay.createContainer(TodoApp, {
...
});
Relay容器将使用GraphQL获取数据,然后更新状态 . 这是一个更高阶的组件,然后这个状态作为道具传递给它的子组件 .
这与Redux之类的通量实现不兼容(或似乎不兼容) . Redux有一个单一的全局状态对象,它也有更高阶的组件,可以将props传递给表示组件 . 所以我看不到Redux存储和Relay容器当前是如何共存的 .
那么我们应该如何更新不是来自数据库的状态呢?这个状态应该如何通过Relay进行管理?
3 回答
虽然我无法向您提供有关一起使用它们的建议,但是 technically you can definitely have several higher order components applied one after another:
我不确定这有多大意义,但它很容易实现 .
这些内容仍在讨论中,如果使用Relay容器,Redux和Relay的当前状态可能不太适合 .
你可以加入讨论here
我在聊天应用程序中完成了以下操作:
聊天组件(
ChatComponent
)是一个愚蠢的反应组件,它希望所有数据都作为道具 . 它还需要将reduxdispatch
函数作为prop,以便在有人想要发送新消息时调度操作 . 这是一个'private'组件,由...包裹ChatComponentRelay - 这将呈现
ChatComponent
,但它是一个Relay组件,它也连接到redux存储 . 它使用生命周期方法之一(而不是构造函数)将通过中继接收的数据分派到redux存储中 . 这是应用程序其余部分使用的组件,基本上只是底层dumbChatComponent
的代理 . 它渲染ChatComponent
传递来自redux商店的道具中的所有数据,以及reduxdispatch
函数 .