Как вы переходите со стокового реле на реле с роутером?

У меня есть приложение React/Relay, которое в настоящее время работает, и я хотел бы добавить маршрутизацию к использованию response-router-relay. Когда я пробую минимально возможное преобразование, см. Приведенный ниже код, я получаю непонятную ошибку в журнале: "Uncaught Error: Invariant Violation: RelayQueryNode: Неверный конкретный узел".

import 'babel/polyfill';
import TodoApp from './components/TodoApp';

import { Router, Route } from 'react-router';

import ReactRouterRelay from 'react-router-relay';
import TodoAppHomeRoute from './routes/TodoAppHomeRoute';

/*

This section works perfectly

ReactDOM.render(
  <Relay.RootContainer Component={TodoApp} route={new TodoAppHomeRoute()} />,
  document.getElementById('root')
);
*/


//This breaks every time.
ReactDOM.render(
  <Router
    createElement={ReactRouterRelay.createElement}>
    <Route
      path="/"
      component={TodoApp}
      queries={new TodoAppHomeRoute().queries} // and the query
      />
  </Router>,
  document.getElementById('root')
);

Другой возможный способ сформулировать этот вопрос: каковы отличия между подходящими способами указать простые ванильные Relay's RelayRoutes.queries и реакции-router-relay для маршрутов?

3 ответа

Решение

Несколько других людей сообщили об этой проблеме здесь.

Похоже, добавление явного import для каждого из Relay а также React в ваших компонентах может исправить это (я видел это только сейчас, и это исправило это для меня):

import React from 'react';
import Relay from 'react-relay';

Или, если не npm install --save react react-relay graphql graphql-relay react-dom обновить ваши зависимости.

Если ответ Криса не сработал, @cpojer написал действительно потрясающие сообщения о маршрутах и ​​ретрансляции здесь: https://medium.com/@cpojer/relay-and-routing-36b5439bad9

Я предполагаю, что new TodoAppHomeRoute().queries это преступник Я догадываюсь, что это, вероятно, статическое свойство. Попробуй это TodoAppHomeRoute.queries,

Если это не сработает, давайте посмотрим код в TodoAppHomeRoute

Другие вопросы по тегам