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

无法使用链接组件传递状态。为什么状态是未定义的?[副本]

张博涛
2023-03-14

我正在尝试学习“react router”,我正在开发一个应用程序,它有一个输入字段,可以为您提供一个下拉列表,其中包含指向欧洲各个火车站的链接,当您单击该链接时,它将呈现一个组件,在本例中为组件,并显示有关该站的更多详细信息。

对于这个应用程序,我必须对外部API进行两次调用。第一个是找到火车站并在下拉列表中显示它们。这是可行的,从那里我可以得到站点的名称并将其放在下拉列表中,我还可以得到一个id,我将使用该id查询第二个API以获得站点的详细信息。当用户单击下拉列表中的站点时,会发生这种情况。现在就可以了。我的问题是,当用户单击下拉列表中的站点时,我已经丢失了站点的名称。我想以某种方式把它传给电台的节目组。

这是我的站点组件:

const Station = (props) => {
 return (
  <h1>Station name: {props.location.state.name}</h1>
 )
}

export default Station;

这里是下拉组件,为了简单起见,我已经对两个站点进行了硬编码,以尝试使其正常工作,否则下拉列表是与用户查询匹配的站点列表。

const Dropdown = (props) => {

return (
<ul>
  <li>
    <Link to={'/station/London'} key="lon" state={{name: 'London Central Station'}}>London </Link>
  </li>
  <li>
    <Link to={'/station/Paris'} key="par" state={{name: 'Paris Central Station'}}>Paris</Link>
  </li>
</ul>
  )
  }

export default Dropdown;

我尝试在链接组件中使用状态道具传递电台名称,但当电台组件安装道具时。地方状态未定义。

最后,我的路线如下:

const Details = (props) => {
return (
    <Switch>
      <Route exact path='/' component={Home} />
      {/* <Route path='/station/:id' render={(props) => (<Station {...props} data={props}/>)} /> */}
      <Route path='/station/:id' component={Station} />
    </Switch>
    )
   }

export default Details;

在这个组件中,我尝试了两种传递道具的方法,但我仍然无法使其工作。我想出的唯一解决办法是

  • 再次调用API以再次获取非最佳电台名称

共有1个答案

皮自明
2023-03-14

根据留档,Link组件本身没有stateprop,但是有一个state键作为toprop的一部分:


<Link
  to={{
    pathname: "/courses",
    search: "?sort=name",
    hash: "#the-hash",
    state: { fromDashboard: true }
  }}
/>

来源:https://reacttraining.com/react-router/web/api/Link/to-object

 类似资料:
  • 我有一个处理程序,在输入字段发生变化时触发。但是,当我将状态日志记录到控制台resData是'未定义'?这是不可能的,因为console.log(身体)确实返回结果。

  • 我试图通过反应路由器链接组件传递道具,但状态仍然未定义,有没有人知道为什么? 路由: 链接: 从路径“/movie”呈现的组件

  • 问题内容: 我已经在SocketIO的帮助下创建了一个小的ReactJS仪表板,用于实时更新。即使我更新了仪表板,也仍然使我感到不确定我是否正确执行了操作。 最让我感到困扰的是getInitialState中的Props作为反模式发布。我创建了一个仪表板,该仪表板从服务器获取实时更新,除了加载页面外,不需要用户交互。根据我的阅读,应该包含一些内容,这些内容将确定是否应重新渲染该组件,以及....我

  • 我已经开始学习ReactJS,有一个关于无状态和有状态组件的问题。一般来说,我遵循组件和容器的分离,如下所示。有状态函数在组件文件夹中,其他逻辑操作在容器文件夹下。文件夹结构 让我们思考材料UI下拉列表。 为了打开和关闭下拉菜单和方法更改打开状态,这意味着它是有状态组件。但没有其他变化(省略年龄设置)。它似乎是可重用的组件,但包括状态与非常简单的操作,如打开和关闭。我应该放入哪个文件夹?容器还是组

  • 本文向大家介绍描述下在react中无状态组件和有状态组件的区别是什么?相关面试题,主要包含被问及描述下在react中无状态组件和有状态组件的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 1,无状态组件主要用来定义模板,接收来自父组件props传递过来的数据,使用{props.xxx}的表达式把props塞到模板里面。无状态组件应该保持模板的纯粹性,以便于组件复用。创建无状态组件如下: v

  • 问题内容: 我已经尝试了两个类组件: 并使用功能组件: 页面上显示的x值永远不会改变,或者似乎是随机改变的。是什么赋予了? 问题答案: 当您告诉React某些更改时,React仅知道使用其为状态管理提供的功能来重新渲染: 另外,功能组件应该是 纯 组件(没有副作用),因此要更新它们,React会给我们带来麻烦: 因此,您不能只是分配给一个变量并期望React知道:您必须使用它的更新函数,以便它知道