我有一个正在运行的React / Relay应用程序,我想使用react-router-relay添加路由。当我尝试最小可能的转换时,请参见下面的代码,我在日志中收到一个无法理解的错误:“未捕获的错误:不变的违规: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')
);


解决这个问题的另一种可能方式是:在指定普通香草中继的RelayRoutes.queries和react-router-relay对Routes的查询的适当方法之间有什么区别?

最佳答案

其他几个人报告了此问题here

似乎为组件中的每个importRelay添加一个显式的React可能会修复它(我刚才看到的是它为我修复了它):

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


否则,请使用npm install --save react react-relay graphql graphql-relay react-dom更新您的依赖项。

关于javascript - 如何从备用中继转移到具有路由器的中继?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32708927/

10-09 17:58