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

反应路由器并将道具传递给其他组件

柳威
2023-03-14

我在一个组件中有一个按钮,单击我想转到另一个组件并将状态传递给该组件。

是这样的:

import React, { Component } from 'react';
import { BrowserRouter, Route } from 'react-router-dom';
import AddNewQuestionPage from 'AddNewQuestionPage';

class AddQuestions extends Component {
  state = {
    questions: []
  };

  routeChange = () => {
    let path = `/admin/add-new-question`;
    this.props.history.push(path);
  }

  render() {
    return (
      <>
       <button onClick={this.routeChange}>
          Add new question
       </button>
       <BrowserRouter>
        <Route exact={true} path='/admin/add-new-question' component={AddNewQuestionPage}/>
       </BrowserRouter>
      </>
    )
  }
}

但它不起作用。单击“我去添加新问题url”,但组件AddNewQuestionPage不会呈现。若我不把路线放在AddQuestions组件中,而是放在应用程序组件中,它就可以工作。它是整个应用程序的主要组件,使用Switch,还设置了其他路由。

但是,如果状态问题是从应用程序组件呈现的,我不知道如何将其传递给AddNewQuestionPage组件?我不能只做:

<Route path='/admin/add-new-question' render={(props) => <AddNewQuestionPage {...props} questions={questions} />

因为它不知道什么是“问题”。对我来说,将状态提升到主要组件似乎不是一个好的解决方案。我在搜索,但我找不到怎么做。。。

共有2个答案

罗昊空
2023-03-14

使用react router dom的最佳方法是:

  1. 始终将make作为所有组件的父组件

请查看本指南:https://reacttraining.com/react-router/web/guides/quick-start

颛孙正卿
2023-03-14

您应该在传递给组件的问题上使用this关键字。

像这样的


<Route path='/admin/add-new-question' render={(props) => <AddNewQuestionPage {...props} questions={this.state.questions} />

 类似资料:
  • 我需要通过使用路由器的组件道具。这是我的代码: 如您所见,我验证了我要传递给登录组件的道具。 当我记录道具时,未经验证的道具不存在。我做错了什么?我怎样才能正确地通过道具?我跟踪了文档和其他讨论。据我所知,这应该是可行的。react router和react router dom的版本为4.0.0

  • 我试图使用react router将props从app.jsx传递到某个路由组件,但出现以下错误

  • 我无法使用反应路由器通过道具。我到现在为止的代码: 错误截图 我正试图访问控制台中的id,就这么简单。 错误仅在我尝试传递道具时显示 源链接:https://reacttraining.com/react-router/web/api/Route/route-props

  • 我有一个模态,我想在其中放置一个动态嵌套视图。我认为这样做的一个好方法是像这样使用 我想把一些道具传给这些组件,就像我平时在React中一样 最终,我将移动到存储/获取状态中的这些属性,但是考虑到当前的实现,在定义开关

  • 所以,我开始学习React与Redux和react-router。一个. net的大麻烦 我想使用对象查找给定url中的道具,因此可以执行以下操作: 我定义了这样一条路线: 组件正在正确的url上呈现,但我无法获得任何道具。 所有这些逻辑都不是在应用根中发生的,而是在这个渲染的组件中发生的: 我需要遵循哪些关键因素,这样才能起作用?我正在使用最新的react路由器v4。谢谢

  • 当我在浏览器上运行我的应用程序时,我的控制台中出现以下错误。 警告:失败的propType:为“Route”提供的prop“component”无效。 我目前正在使用以下开发需求的版本 这就是我的路由文件的外观。 这就是我的主js的样子 请问这个错误是从哪里来的?我该如何解决这个问题?