reactjs – 在通过react路由器时隐藏id或查询字符串
发布时间:2020-12-15 09:36:58 所属栏目:百科 来源:网络整理
导读:我有路由我传递id,但我不想在URL中显示id, `Route path={`${match.url}invite-members/:groupID`} exact component={InviteMembers} /` 这将在url https://local…./invite-members/5中转换, 但而不是我想要https://local…./invite-members,但功能应该保持
我有路由我传递id,但我不想在URL中显示id,
`<Route path={`${match.url}invite-members/:groupID`} exact component={InviteMembers} />` 这将在url https://local…./invite-members/5中转换, 使用反应路由器“react-router-dom”:“^ 4.2.2”, 解决方法
如果要将URL更改为“/ invite-members”,可以添加“重定向”组件.如果您想保存groupId,可以将其保存到组件状态:
import React,{ PureComponent } from "react"; import PropTypes from "prop-types"; import { Router,Route,Link,Switch,Redirect } from "react-router-dom"; class Root extends PureComponent { // add groupId field to your component // In case you use redux or any another state management library,you can save groupId to store state = { groupId: null }; render() { const { store,history } = this.props; // just for example I defined '/' path to redirect on /invite-members url return ( <Router> <Switch> <Route path="/" exact render={props => ( <Redirect to={{ pathname: "/invite-members/123",state: { from: props.location } }} /> )} /> <Route path="/invite-members" exact render={props => ( <InviteMembers {...props} groupId={this.state.groupId} /> )} /> <Route path="/invite-members/:groupID" exact render={props => { return ( <RedirectAndSaveGroupId {...props} groupId={props.match.params.groupID} onSetGroupId={groupId => { this.setState({ groupId }); }} /> ); }} /> </Switch> </Router> ); } } export default Root; class RedirectAndSaveGroupId extends PureComponent { componentDidMount() { // save groupId to Root component this.props.onSetGroupId(this.props.groupId); } render() { // redirect to /invite-members without groupId return ( <Redirect to={{ pathname: "/invite-members",state: { from: this.props.location } }} /> ); } } // Just for demo. In this.props.groupId we can receive groupId class InviteMembers extends PureComponent { render() { return this.props.groupId; } } 请注意,如果您使用任何状态管理库(如Redux),则可以在其中存储组ID (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |