javascript - 如何从普通中继转移到带有路由器的中继?

标签 javascript reactjs relayjs react-router-relay

我有一个当前正在运行的 React/Relay 应用程序,我想使用react-router-relay 添加路由。当我尝试最小可能的转换时,请参阅下面的代码,我在日志中收到难以理解的错误:“ Uncaught Error :不变违规: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 的 RelayRoutes.queries 和 React-router-relay 的路由查询的适当方法之间有什么区别?

最佳答案

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

看起来像在组件中为每个 RelayReact 添加显式 import 可能会修复它(我刚才看到了这个,它为我解决了这个问题):

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/

相关文章:

javascript - 无法在 React 中重现淡入效果

reactjs - 使用 setTimeout() 调用 Redux 操作

javascript - 使用中继进行身份验证和访问控制

javascript - 如何避免在 React 中额外包装 <div>?

javascript - 如何隐藏页面上某种类型的第一个标签

JavaScript - 如何增加记录中数据的计数器

reactjs - 如何在 useState prevState 映射中使用 "if"

facebook - 在 Relay 项目中分离 React 组件

reactjs - Relay Modern 片段数据为空

javascript - 类型错误: Argument 1 of Node.removeChild不是一个对象。删除 div 时