javascript – 中继:如何合并而不是覆盖查询嵌套路由?

前端之家收集整理的这篇文章主要介绍了javascript – 中继:如何合并而不是覆盖查询嵌套路由?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法浏览到我的应用程序中的/用户,因为它不会触发提取我所期望的所有查询.

我的应用程序包含一个App组件和一些包含实际内容(如Dashboard或UserList)的组件.还有一个EnsureAuthenticationContainer,但这只是一个组件,当用户进行身份验证时,只需简单地呈现它的子代.这是我的路线设置:

const ViewerQueries = {
    viewer: () => Relay.QL`query { viewer }`
};

[…]

<Router history={browserHistory} render={applyRouterMiddleware(useRelay.default)} environment={Relay.Store}>
    <Route path="/" component={App} queries={ViewerQueries}>
        <Route path="login" component={Login} />
        <Route component={EnsureAuthenticationContainer}>
            <IndexRoute component={Dashboard} />
            <Route path="users" component={UserList} queries={ViewerQueries} />
            <many more routes />
        </Route>
    </Route>
</Router>

问题是,App和UserList都已经定义了fragements,似乎只发送UserList的查询.

片段:

fragments: {
    viewer: () => {
        return Relay.QL`
            fragment on ViewerType {
                loggedInUser {
                    id
                }
            }
       `;
    }
}

UserList片段:

fragments: {
    viewer: () => Relay.QL`
        fragment on ViewerType {
            id,users(first: $limit) {
                edges {
                    node {
                        id,userName,firstName,lastName,eMail
                    }
                }
            }
        }
    `,}

如何设置React / Relay / Router查询用户和loggedInUser?

更新

我使用react-router@3.0.5和react-router-relay@0.13.7

更新#2

当我访问“/ users”并发送到服务器时,这是继电器产生的唯一查询

query Index {
  viewer {
    id,...F0
  }
}
fragment F0 on ViewerType {
  _users2quBPZ:users(first:100) {
    edges {
      node {
        id,eMail
      },cursor
    },pageInfo {
      hasNextPage,hasPrevIoUsPage
    }
  },id
}

响应匹配查询

解决方法

我完全不确定,但我会这样做:

应用程序片段:

fragments: {
  viewer: () => {
    return Relay.QL`
      fragment on ViewerType {
        loggedInUser {
          id
        }
        ${UserList.getFragment("viewer")}
      }
    `;
  };
}

我认为这个例子是对你有帮助的:https://github.com/taion/relay-todomvc/blob/master/src/components/TodoApp.js#L60-69

猜你在找的JavaScript相关文章