React.Js 将道具从组件传递到 NavBar 组件?

Posted

技术标签:

【中文标题】React.Js 将道具从组件传递到 NavBar 组件?【英文标题】:React.Js Passing props from component to NavBar component? 【发布时间】:2021-11-25 13:44:06 【问题描述】:

所以我有 React.JS 页面,这个页面由两部分组成。 NavBar 和页面内容。

在 App.js 中,我将道具传递给页面,我想在导航栏中将此道具显示为页面标题。我该怎么做?,基本上每个链接都有自己的道具,这是页面的名称,我想在 PageHeader 组件中显示这个道具。

import BrowserRouter as Router, Route, Switch  from "react-router-dom";
import Banany from "./Banany";
import Broskve from "./Broskve";
import PageHeader from "./Components/PageHeader";
import Home from "./Home";
import Hrusky from "./Hrusky";


function App() 
  return (
    <Router>
      <PageHeader/>

      <Switch>
        <Route exact path="/">
          <Home pageTitle="Home"/>
        </Route>
        <Route path="/banany">
          <Banany pageTitle="Bananas"/> <--- I want to display Bananas in PageHeader component
        </Route>
        <Route path="/broskve">
          <Broskve pageTitle="Broskve"/>
        </Route>
        <Route path="/hrusky">
          <Hrusky pageTitle="Pears"/>
        </Route>
      </Switch>

    </Router>
  );


export default App;

【问题讨论】:

【参考方案1】:

如果页面标题取决于您的路线,只需将其移动到您的路线中,如下所示:

<Route path="/banany">
  <PageHeader pageTitle="Bananas" />
  <Banany pageTitle="Bananas" />
</Route>

显然还有其他方法可以实现这种行为,并且可能会重复,但这是直截了当的方法。

【讨论】:

这确实是个好主意,谢谢,我会使用你的解决方案。【参考方案2】:

有各种各样的方法可以做到这一点。 想到的 2 个最相关的:

给每条路线一个参数,即pageTitle,就像你传递给每个组合一样。 然后您可以从导航栏访问它。 使用专用库(redux/etc..)或仅使用 React 的内置 contextAPI 管理全局状态。

在这种情况下,我会选择第一种方法,因为如果你只需要这种方法,它会更简单。

【讨论】:

以上是关于React.Js 将道具从组件传递到 NavBar 组件?的主要内容,如果未能解决你的问题,请参考以下文章

React.js + Flux -- 在视图中将回调作为道具传递

我可以通过 props.children React JS 将道具传递给孩子吗

如何在 React.js 中将道具从一个类传递到另一个类

如何将从 API 获取的数据作为道具传递给其路由在 React JS 的另一个页面中定义的组件?

如何在VueJS中将动态鼠标滚动值作为道具传递

如何在 React js 中将道具传递给 API URL?