我有路由我传递id,但我不想在URL中显示id, `Route path={`${match.url}invite-members/:groupID`} exact component={InviteMembers} /` 这将在url https://local…./invite-members/5中转换, 但而不是我想要https://local…./i
`<Route path={`${match.url}invite-members/:groupID`} exact component={InviteMembers} />`
这将在url https://local…./invite-members/5中转换,
但而不是我想要https://local…./invite-members,但功能应该保持相同,因为我在邀请成员中通过this.props.match.params.groupID获取id应该是它,请帮助
使用反应路由器“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