Я не могу перейти к /users
в своем приложении, потому что оно не запускает выборку всех запросов, которые я ожидал бы.
Мое приложение состоит из компонента 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
имеют определенные фрагменты, и кажется, что отправляется только запрос UserList
.
Фрагмент App
:
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 для запроса как users
, так и loggedInUser
?
Обновить
Я использую [email protected] и [email protected]
Обновление №2
Это единственный запрос, который Relay генерирует, когда я посещаю «/users», и который отправляется на сервер:
query Index {
viewer {
id,
...F0
}
}
fragment F0 on ViewerType {
_users2quBPZ:users(first:100) {
edges {
node {
id,
userName,
firstName,
lastName,
eMail
},
cursor
},
pageInfo {
hasNextPage,
hasPreviousPage
}
},
id
}
Ответ соответствует запросу:
loggedInUser { id }
под запросuserList
? Relay не получаетloggedInUser
, потому что ваш активный компонент (UserList
) не запрашивает его. - person Chris   schedule 04.05.2017UserList
ничего не знает и не должен знать о вошедшем в систему пользователе. Даже если я добавлю к немуloggedInUser
,App
, который предназначен для отображения текущего пользователя, он все равно не получитloggedInUser
в качестве реквизита. - person Michael Hilus   schedule 05.05.2017