reactjs - 如何在 React 中将动态值从一个组件传递到另一个组件
问题描述
我有一个带有包含 onClick 事件的锚标记的导航栏组件。单击时,会将一个值(导航值)传递给函数 Testfunction,该函数是一个单独的组件。我想将 Testfunction 导入到 Content 组件中,以便我可以访问并显示来自 Navbar (navvalue) 的值。如何访问内容中的“导航值”?这是我正在参加的反应课程中的一项作业。我应该使用道具。我不应该使用 state 或 React Route,因为我们还没有达到这些主题。谢谢您的帮助!
这是我的代码:
应用程序.js
import "./styles.css";
import React from "react";
import Navbar from "./Navbar";
import Content from "./Content";
import Testfunction from "./Testfunction";
export default function App() {
return (
<div className="App">
<Navbar onPageChange={Testfunction} />
<Content />
</div>
);
}
导航栏.js
import React from "react";
const Navbar = (props) => {
const navvalue = "Nav Value";
return (
<a
className="nav-link active text-uppercase"
aria-current="page"
href="#"
onClick={() => props.onPageChange(navvalue)}
>
{navvalue}
</a>
);
};
export default Navbar;
测试函数.js
const Testfunction = (navvalue) => {
return navvalue;
};
export default Testfunction;
内容.js
import React from "react";
import Testfunction from "./Testfunction";
const Content = () => {
const navvalue = Testfunction();
return (
<p>Here´s the content. Insert value coming from Navbar here: {navvalue}</p>
);
};
export default Content;
解决方案
要在两者中共享一些状态,<Navbar />
您<Content />
可以将状态放入它们的父级 -> App
。我们还<Navbar />
通过 setter 函数来更新父级中的状态。所以它可以是这样的:
import React from "react";
export default function App() {
const [navValue, setNavValue] = React.useState();
return (
<div className="App">
<Navbar setNavValue={setNavValue} />
<Content navValue={navValue} />
</div>
);
}
const Navbar = ({ setNavValue }) => {
const value = "Nav Value";
return <button onClick={() => setNavValue(value)}>{value}</button>;
};
const Content = ({ navValue }) => {
return (
<p>Here´s the content. Insert value coming from Navbar here: {navValue}</p>
);
};
推荐阅读
- flutter - 为什么柱子相互叠放?
- javascript - 错误消息无法读取未定义的属性“addEventListener”
- json - 从 BigQueryToCloudStorageOperator 输出导入 JSON 时出现 mongoimport 错误
- excel - Excel 文档在一台 PC 而不是其他 PC 上导致运行时错误
- android - Mp4Parser 输出视频不在任何播放器中播放
- c# - 将c#空格分隔字符串转换为MongoDB BsonDocument
- java - Visual Studio 代码撤消我的方法缩进?
- java - 如何从自定义对象为我的 GUI 属性赋值?
- asp.net - 在 web 方法中从数据库中获取数据在 vb.net 中返回 null
- django - 在 django 路径中添加多个值