reactjs - 通过 React-Router v5 Link 传递对象
问题描述
我想通过对象(chartData
)通过react-router Link
所以我尝试这样:
应用程序.js
<Switch>
<Route path="/csvFile" exact component={CsvFilePage} />
<Route path="/csvFile/:id" component={CsvFilePage} />
</Switch>
设置菜单
(Link
这里有,我想传递chartData
给 CsvFilePage)
const SettingMenu = ({ show, chart, chartData }) => {
return (
<>
<Setting show={show}>
<Box>
<Link
to={{
pathname: `/csvFile/${chart.key}`,
state: {
chartData: JSON.stringify(chartData),
},
}}
>
<InsertDriveFileIcon style={{ fontSize: 40 }} />
<p>csv</p>
</Link>
</Box>
</Setting>
</>
);
};
这里是CsvFilePage
CSVFilePage
const CsvFile = ({ match }) => {
return (
<div className="preview">
{match.params.id === "Bar" && chartType[0]}
</div>
}
我搜索了它并尝试使用它,但我不知道如何从Link
. 我可以得到params.id
,但我不知道如何获取对象,所以我尝试以与获取 id 相同的方式获取对象,但我没有工作
数据如下chartData
所示:
{
labels: defaultLabels,
datasets: [
{
label: "dataSetting",
data: defaultDatas,
backgroundColor: defaultBackgroundColor,
},
],
}
解决方案
你的状态在location
https://reactrouter.com/web/api/location
这就是你如何得到它:
const CsvFile = ({ match, location }) => {
const { chartData } = location.state;
return (
<div className="preview">
{match.params.id === "Bar" && chartType[0]}
</div>
}
推荐阅读
- android - 为什么从我粘贴的内容中更新 IDE 需要这么长时间?
- azure-devops - 由于数据分类语句,Azure DevOps DACPAC 部署失败
- fortran - 将使用 Conda 安装的 FFTW 库链接到 gfortran?
- sql - 动态 SQL 查询
- bootstrap-vue - 与 BootstrapVue 中的属性相关联的动态指令修饰符
- c# - 从服务器加载 Json 时如何修复错误
- python-3.x - 如何在给定的时间内重复此代码
- reactjs - 使用 terser webpack 插件如何避免使用注释构建
- android - 错误:无法解决:com.google.android.gms:play-services-analytics:17.2.0
- javascript - 我想要一个特定长度的数字