React native 使用中继环境的突变
我正在使用React Native的中继,在登录和注销过程中出现问题 登录或注销后,Relay会阻止前一个用户访问存储区。为了解决这个问题,我使用了React native 使用中继环境的突变,react-native,graphql,relayjs,React Native,Graphql,Relayjs,我正在使用React Native的中继,在登录和注销过程中出现问题 登录或注销后,Relay会阻止前一个用户访问存储区。为了解决这个问题,我使用了Relay.Renderer和Relay.Environment。如中所示,在每个渲染器中我放置了环境的单例对象 问题是我之前对Relay.Store的对象进行了一次变异,如中所示 Relay.Store.commitUpdate(新建CreateProfile(),回调) 现在它不起作用了。我想这是因为Relay.Store对服务器端点一无所知。但
Relay.Renderer
和Relay.Environment
。如中所示,在每个渲染器中
我放置了环境
的单例对象
问题是我之前对Relay.Store
的对象进行了一次变异,如中所示
Relay.Store.commitUpdate(新建CreateProfile(),回调)
现在它不起作用了。我想这是因为Relay.Store
对服务器端点一无所知。但是Relay.Environment
现在我使用的是类似这样的this.props.relay.commitUpdate(newcreateprofile(),callback)
。当父组件包装为Relay.Container
时,它工作得非常好,因此它在props中有Relay对象
但是,对于那些不是
Relay.Containers
且道具中没有Relay
对象的组件,我应该怎么做呢?Relay.Store
是Relay.Environment
和Relay.Store.commitUpdate()的全局可访问单例,它更新全局环境中的数据。但是,由于您正在使用自己的Relay.Environment
实例,要更新它,您需要使用this.props.Relay.commitUpdate()
,正如您所指出的。这将更新容器渲染时使用的环境
如果需要从容器的子组件中进行突变,而这些子组件未包装在中继容器
中,则有两种方法。您只需将中继
道具传递给它们即可,因此在容器的渲染功能中,您可以:
<Child relay={this.props.relay} />
并且只在渲染中向子组件传递回调:
<Child onCreateProfile={this.onCreateProfile} />
如果您需要对组件层次结构中其上方没有中继.Container
的组件进行变异,您可以在共享根组件中创建中继.Environment
,并使用道具向下传递(或使用上面显示的策略传递回调)
<Child onCreateProfile={this.onCreateProfile} />