如何使用路由器从库存继电器转移到继电器?

时间:2015-09-22 05:20:05

标签: javascript reactjs relayjs react-router-relay

我有一个目前正在运行的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')
);

说出这个问题的另一种可能的方法是:指定简单的vanilla Relay的RelayRoutes.queries和react-router-relay的路由查询的适当方法之间有什么区别?

3 个答案:

答案 0 :(得分:1)

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

在您的组件中为每个select A1, min(tier) from tablename group by A1; (provided the tier values are numeric) import 添加一个明确的Relay似乎可以修复它(我刚才看到这个并修复了它对我而言):

React

或者失败,import React from 'react'; import Relay from 'react-relay'; 更新您的依赖项。

答案 1 :(得分:0)

我猜测new TodoAppHomeRoute().queries是罪犯。我的预感是,它可能是一个静态属性。试试这个TodoAppHomeRoute.queries

如果这不起作用,请查看TodoAppHomeRoute

中的代码

答案 2 :(得分:0)

如果克里斯的答案不起作用,@ cpojer在这里写了一篇关于路线和接力的非常精彩的帖子:https://medium.com/@cpojer/relay-and-routing-36b5439bad9