2016-05-03 28 views
9

Próbuję Wdrażać pewne rzeczy z React, Relay i GraphQL, ale miałem do czynienia z Problemem, którego nie rozumiem i gdzie nie mogę znaleźć rozwiązania.RelayContainer: oczekiwany prop `% s` do dostarczenia do`% s`, ale '+' ma wartość `undefined`. Przekaż jawne `null` jeśli jest to zamierzone

Najpierw stworzyłem RootQuery i miałem jeden komponent, który działał dobrze. Teraz stworzyłem Sub Komponent z własnym fragmentem an i dostać ten błąd:

relay.js:1799 Warning: RelayContainer: Expected prop room to be supplied to RoomList , but got undefined . Pass an explicit null if this is intentional.

W Networkrequest widzę wszystkie wymagane dane.

Oto kod:

Zapytanie głównej

const RoomQuery = { 
    room: (Component) => Relay.QL` 
     query { 
     room { 
      ${Component.getFragment('room')}, 
     } 
     } 
    ` 
}; 

Route

<Route name="rooms" path="/rooms" component={Rooms} onEnter={requireAuth} queries={RoomQuery}/> 

Pojemnik Relay

export default Relay.createContainer(Rooms, { 
fragments: { 
    room:() => Relay.QL` 
    fragment on Room { 
     title, 
     description, 
     publicKeys, 
     takenKeys, 
     image_filename, 
     subRoomsCount, 
     owner { 
      fullName 
     }, 
     ${RoomList.getFragment('room')}, 
    } 
`, 
} 
}); 

Relay Sub Pojemnik

export default Relay.createContainer(RoomList, { 
fragments: { 
    room:() => Relay.QL` 
    fragment on Room { 
     subRooms{ 
      title, 
      description, 
      publicKeys, 
      takenKeys, 
      image_filename, 
      availableKeys, 
      owner { 
       fullName 
      }, 
      subRoomsCount 
     } 
    } 
`, 
} 
}); 

W moim React Komponent Używam tego Sub React Komponent tak:

<RoomList></RoomList> 

nie wiem, czy ja coś źle zrozumieć, ale ja thougt że przekaźnik będzie załadować dane i wypełnić go w this.props , ale istnieje tylko obiekt przekaźnikowy.

Dzięki za pomoc :)

Pozdrowienia

Ronny Gerndt

Odpowiedz

8

Ok, znalazłem rozwiązanie problemu. Potrzebne mi było zmienić

<RoomList></RoomList> 

do

<RoomList room={this.props.room}></RoomList> 

i Relay daje mi prawo Wypełniony List przedpokojem.

Mam nadzieję, że ktoś inny uzna to za przydatne;)