我在一个页面上有一个按钮,如果用户单击该按钮,我将使用以下功能重定向到另一个页面(第2页):
const viewChange = (record) => {
let path = `newPath`;
history.push('/ViewChangeRequest');
};
我想将某些值传递给其他页面,record.id, record.name
但无法弄清楚我们将这些值传递给其他页面的方式。
我的其他页面如下所示:
const ViewChangeRequest = () => {
.....
......
......
};
export default ViewChangeRequest;
任何人都可以提出有关如何重定向到其他页面以及该值以及如何检索第2页中的值的任何想法。
PS:我也在使用反应性功能组件和挂钩。
提前谢谢了。
更新:
我通过了道具但是遇到了类似的错误 Cannot read property 'state' of undefined
const viewChange = (record) => {
history.push({
pathname: '/Viewchange',
state: { id: record.id, dataid: record.key },
});
};
第2页:我这样检索
const ViewChangeRequest = (props) => {
const { data: localCodeData, loading: localCodeDataLoading, error: localCodeDataError } = useQuery(GET_SPECIFICLOCALCODE, {
variables: { codeinputs: { id: props.location.state.dataid } },
});
const { data: requestData, loading: requestDataLoading, error: requestDataError
} = useQuery(GET_SPECIFICREQUEST, {
variables: { requestinputs: { id: props.location.state.id } },
});
return (
........
.......
);
};
export default ViewChangeRequest;
第二次更新:
routes.js文件
{
path: '/Viewchange/:id/:dataid',
title: 'Viewchange',
icon: 'dashboard',
breadcrumbs: ['dashboard'],
contentComponent: ViewChangeRequest,
isEnabled: () => false,
},
第1页:
const viewChange = (record) => {
debugger;
history.push(`/Viewchange?id=${record.id}&dataid=${record.key}`);
};
第2页
const ViewChangeRequest = (props) => {
};
export default withRouter(ViewChangeRequest);
如果您<HashRouter>
在React应用中用于路由,那么问题就出在那儿。不幸的是,它没有状态,因为它没有使用History API。而location.state
您所看到的取决于此。所以我想这就是您到达undefined
那里的原因。
我认为可行的解决方案有2种。
使用<BrowserRouter>
:
如果将路由更改为<BrowserRouter>
它,则一旦使用,将如下所示显示位置状态:
history.push('/ViewChangeRequest', { id: 'some id', dataid: 'some key' });
从<BroswerRouter>
文档中:
一个
<Router>
使用HTML5历史API(pushState的,replaceState和popstate事件),以确保您的UI同步与URL。
我已经测试了,在控制台上我看到了以下内容:
使用查询字符串:
或者只是简单地通过URL传递它,如下所示:
history.push('/ViewChangeRequest?id=someId&dataid=someKey');
并使用以下search
属性location
:
const queryString = history.location.search;
历史记录API:
从History API文档中:
DOM窗口对象通过历史对象提供对浏览器会话历史的访问。
我希望这有帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句