当前位置: 首页 > 知识库问答 >
问题:

无法获取用户ID路由参数以在react路由器中继上工作

经正祥
2023-03-14

我正在尝试使用React-Relay路由器学习React-Relay和GraphQL,但无法在我的路由中获得参数。我的困难在于“/Maps/:userID”路线。

这是我的路由器:

ReactDOM.render(
    <RelayRouter history={browserHistory}>
      <Route path="/"
        component={HomeSubAppContainer}
        renderLoading={() => <Spinner/>}
      >
        <IndexRoute component={WelcomePageContainer}/>
      </Route>
      <Route path="/Maps/:userID"
        component={MapsSubAppContainer}
        renderLoading={() => <Spinner/>}
        queries={userRootQuery}
      >
        <IndexRoute
          component={WeekMapContainer}
          renderLoading={() => <Spinner/>}
        />
      </Route>
    </RelayRouter>,
    document.getElementById('root')
  );

这是我的中继容器和根查询:

 export const MapsSubAppContainer = Relay.createContainer(MapsSubApp, {
    fragments: {
      user: () => Relay.QL
      ` fragment on User {
          birthDate
        }
      `
    }
  });

  export const userRootQuery = {
    user: () => Relay.QL
    ` query {
        user(userID: $userID)
      }
    `
  };

这里是我的react组件中的一个位置,我在route参数中插入了userID。我正在使用react router的browserHistory。“1”是我的测试用户ID。

handleSubAppsNavClick(button) {
  const path = button === 'Maps' ? '/Maps/1' : '/' + button;
  browserHistory.push(path);
}

这是我的模式的根查询:

var queryType = new GraphQLObjectType({
    name: 'Query',
    fields: () => ({
      node: nodeField,
      user: {
        type: userType,
        args: {
          userID: {type: GraphQLString}
        },
        resolve: (args) => getUser(args.userID)
      }
    })
  });

我尝试遵循react-router-relingGithub页面上的示例代码,但我收到一个控制台错误:

警告:[反应路由器]位置“/地图”与任何路由都不匹配

感谢您提供的任何建议。

共有2个答案

班言
2023-03-14

我在MapsSubApp组件中将用户ID添加到路由中,但在路由器转到Maps/userID之前,我应该在早期的HomeSubApp组件中这样做。

宗政法
2023-03-14

您的代码中存在某种错误,导致它试图导航到地图,而您没有为其设置路由。仔细检查您是如何进行过渡的。

 类似资料:
  • 使用redux和反应路由器,我想访问路由指定的组件以外的组件上的路由参数。 我已经对react-router、redux和react-router-redux进行了如下设置,我想从我的redux存储访问reportId参数。 我已经尝试连接react-redux路由器来存储路由状态,但是我发现除了活动路由的完整路径之外,redux内部没有任何有用的存储。这让我可以选择从redux中的路径解析出re

  • 我正在使用react、webpack和babel。我无法从URL获取id参数。 我收到以下错误: -GEThttp://localhost:8080/edit/bundle.js404(未找到) -拒绝从http://localhost:8080/edit/bundle.js执行脚本,因为它的MIME类型(text/html)不可执行,并且启用了严格的MIME类型检查。 我的代码 我的URL 谢谢

  • react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击

  • 我想从API中读取要显示的产品。然后,当我按下其中一个显示的产品时,它应该使用url中的产品ID和要在页面上查看的产品详细信息将我路由到一个组件,以获取有关该产品的详细信息。我在这里读取了API中的数据,并详细显示了产品。 我想通过产品ID添加一个路由链接。如何将详细信息作为其他组件的道具发送?

  • 我在使用react hooks的reach router上遇到了一点问题。我需要在浏览器中捕获路由的参数,我尝试使用Web of reach路由器中的本机文档的道具,但这并没有给我参数,路由是这样的: 如何捕获该变量“init”?

  • 我有一个路由器像下面: 以下是我想要实现的目标: 如果未登录,将用户重定向到 如果用户在登录后试图访问,请将其重定向到root 因此,现在我尝试在