Я работаю над преобразованием приложения Flux в Relay.js, и у меня возникают некоторые проблемы. Кажется, я не могу заставить состав фрагментов компонентов работать правильно. Правильные данные возвращаются с сервера, но собранные данные по какой-либо причине никогда не возвращаются в реквизиты родительского компонента.Relay.js правильно не разрешает скомпонованный фрагмент
вот мой код до сих пор:
LibraryLongDescription.js
import React, {Component, PropTypes} from 'react';
import Relay from 'react-relay';
import DocumentTitle from 'react-document-title';
import Address from '../components/Address';
import Orders from '../pages/Orders';
export default class LibraryLongDescription extends Component {
constructor(props)
{
super(props);
this.state = {
library: {}
};
console.log(props);
if(props.library){
this.state.library = props.library;
}
}
render()
{
return (
<DocumentTitle title="Libraries">
<div>
{this.state.library.name}
<div className="row">
<Address type={"Address"} address={this.state.library.address} />
</div>
<div className="top-space-60">
<h3>Orders</h3>
<Orders />
</div>
</div>
</DocumentTitle>
);
}
}
export default Relay.createContainer(LibraryLongDescription, {
fragments: {
library:() => Relay.QL`fragment on Library {
id,
name,
address{
id
sanNumber,
addressLine1,
addressLine2,
city,
state,
zip
},
${Orders.getFragment('orders')}
}`,
}
});
Orders.js
import React, {Component, PropTypes} from 'react';
import Relay from 'react-relay';
class Orders extends Component {
constructor(props)
{
super(props);
console.log(props);
}
render()
{
return (<h1>This is where the order goes</h1>);
}
}
export default Relay.createContainer(Orders, {
fragments: {
orders:() => Relay.QL`fragment on Library {
orders(first: 10){
edges{
node{
id,
message_number,
order_total
}
}
pageInfo{
hasPreviousPage,
hasNextPage
}
}
}`
}
});
Это не решает правильно. Когда я объединяю реквизиты журнала в LibraryLongDescription.js, я получаю все значения из этого запроса, но я ничего не получаю от фрагмента Orders. Когда я смотрю, чтобы увидеть, что пришел по сети я получаю данные в этой форме:
{
"data":{
"library":{
"id":"valid",
"name":"valid",
"address":{
correct data
},
"_orders1mpmPX":{
"edges":[
{
"node":{
correct data
},
"cursor":"correct data"
},
],
"pageInfo":{
correct data
}
}
}
}
}
но когда я утешаю реквизит из библиотеки Длинных описаний входа я не вижу ничего для заказов. Я также получаю это свойство: __fragment__
, который, похоже, не имеет ничего полезного в этом. Любая помощь с этим была бы весьма признательна. Я много часов искал в Интернете решения. Если есть какая-либо информация, которую я не предоставил, это было бы полезно, дайте мне знать.
Я нашел graphiql отличный инструмент для отладки моих конечных точек graphql, это может быть полезно. Вы можете найти его здесь: https://github.com/graphql/graphiql – alexi2
@ alexi2 Спасибо за подсказку. Я действительно использую этот инструмент. Это здорово! Я проверил, что моя проблема не является проблемой на сервере. Это что-то с Relay.js –
Хорошо сделанный по решению этого вопроса, возможно, вам стоит немного изменить свои сообщения, чтобы еще больше выяснить, в чем проблема и как это было решено. Отличная работа, просто подумайте, что это может быть хорошим примером для других, которые последуют в будущем. В частности, если вы вставили вопрос о проблеме и указали на документацию для справки. – alexi2