react-native - 将 Relay 与 React-Native 结合使用时的条件片段或嵌入的根容器

标签 react-native relayjs

我有 relayreact-native 合作,但我对如何最好地利用中继路由和根容器感到困惑,尤其是在使用 Navigator 时。呈现多条路线。

参加以下类(class):

var Nav = React.createClass({

 renderScene(route, nav) {
   switch(route.id) {
     case 'first':
       return <First navigator={nav} />
     case 'second':
       return <Second navigator={nav} />
   }
 },

 render() {
   <Navigator
     initialRoute={{ id: 'first' }}
     renderScene={this.renderScene}
   />
 }

})


module.exports = Relay.createContainer(Nav, {   
  fragments: {
    viewer: () => Relay.QL`
      fragment on User {
        ${First.getFragment('viewer'},
        ${Second.getFragment('viewer'}
      }
    `   
  } 
})

在我的父路由中,我然后请求 User构建查询的片段。

问题是该片段将包括由 first 定义的那些字段。和 second组件,即使一次只显示其中一个。

在这种情况下,我应该:

1) 返回另一个 Relay.RootContainerrenderScene打回来?嵌入 Relay.RootContainers 通常是个坏主意吗?在彼此之间?

renderScene(route, nav) {
  switch(route.id) {
    case 'first':
      return (
        <Relay.RootContainer
           Component={First}
           route={new FirstRoute()}
           renderFetched={(data) => {
             return <First navigator={nav} {...data} />
           }}
        />
      )
  }
}

2)使用条件变量来包含片段?

initialVariables: {
  first: true
},

fragments: {
  viewer: (variables) => Relay.QL`
    fragment on User {
      ${First.getFragment('viewer').if(variables.first)
    }
  `
}

或者有其他建议吗?

最佳答案

使用这样的东西:1

function matchRoute(route, map) {
  return map[route.name] ? map[route.name]() : null;
}

尝试这个:

fragments: {
  viewer: (variables) => Relay.QL`
    fragment on User {
      ${route => matchRoute(route, {
        FirstRoute: () => First.getFragment('viewer'),
        SecondRoute: () => Second.getFragment('viewer'),
      }},
    }
  `,
}

[1]:medium.com/@cpojer/relay-and-routing

关于react-native - 将 Relay 与 React-Native 结合使用时的条件片段或嵌入的根容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577496/

相关文章:

android - React Native png 图像是像素化的而不是高清的

javascript - React-native Redux 组件不会在状态更改时使用 bool 值重新渲染

graphql - 连接中的不透明游标应该在不同的字段参数中保持稳定吗?

javascript - 中继分页(不是无限滚动)

javascript - Relay.js 无法正确解析组合片段

javascript - 如何在setState中同时编辑数组中对象的特定字段

reactjs - React-navigation 用 React Context 包裹根 AppContainer

javascript - 按图像导航

javascript - 如何从 GraphQLSchema javascript 对象获取 .graphql 文件?

javascript - 在 setVariables 之后 React 继电器挂起的变量总是为 null