Reactjs 更改“;“回去”;对应于使用react router dom访问的最后一页的按钮标签
我正在尝试使用react路由器dom实现一个返回按钮。按钮工作正常,但我的问题是根据访问的最后一页相应地更改其标签。 此按钮将仅出现在可从两个不同页面访问的一个特定组件中Reactjs 更改“;“回去”;对应于使用react router dom访问的最后一页的按钮标签,reactjs,react-hooks,react-router-dom,Reactjs,React Hooks,React Router Dom,我正在尝试使用react路由器dom实现一个返回按钮。按钮工作正常,但我的问题是根据访问的最后一页相应地更改其标签。 此按钮将仅出现在可从两个不同页面访问的一个特定组件中 import { useHistory } from "react-router-dom"; export const GoBack = ({ label }) => { const history = useHistory(); return ( <div> <butto
import { useHistory } from "react-router-dom";
export const GoBack = ({ label }) => {
const history = useHistory();
return (
<div>
<button onClick={() => history.goBack()}>{label}</button>
</div>
)
};
从“react router dom”导入{useHistory};
导出常量GoBack=({label})=>{
const history=useHistory();
返回(
history.goBack()}>{label}
)
};
干杯 像这样传递当前位置:
使用
链接
您的下一条路径`
推送历史记录:
this.props.history.push({
路径名:'/next',
状态:{prevPath:this.props.location.pathname}
})
别忘了用路由器将组件包装成。(否则此.props.location将不可用)。
现在您可以在下一个组件中获取prevPath
componentDidMount(){
const{prevPath}=this.props.location.state;//我认为它在这里,但谷歌需要确保
这是我的国家({
普雷维思
})
}
现在,您可以对按钮进行条件渲染:
render(){
返回(
{this.state.prevPath==“yourrequiredprevpath”&&go johnny go}
)
}
我强烈认为,对于您的问题,有一个更好、更稳定的答案,但因为没有人回答,所以在您找到它之前,这将使您继续前进。像这样传递您当前的位置:
使用链接
您的下一条路径`
推送历史记录:
this.props.history.push({
路径名:'/next',
状态:{prevPath:this.props.location.pathname}
})
别忘了用路由器将组件包装成。(否则此.props.location将不可用)。
现在您可以在下一个组件中获取prevPath
componentDidMount(){
const{prevPath}=this.props.location.state;//我认为它在这里,但谷歌需要确保
这是我的国家({
普雷维思
})
}
现在,您可以对按钮进行条件渲染:
render(){
返回(
{this.state.prevPath==“yourrequiredprevpath”&&go johnny go}
)
}
我强烈认为,对于您的问题,有一个更好、更稳定的答案,但因为没有人回答,所以在您找到答案之前,这将使您继续前进。为什么您只为goBack制作单独的组件?为什么您不能用布尔值传递道具来处理您的情况?就像我说的=>此按钮将只出现在一个特定的组件中,可以从两个不同的页面访问。我需要知道用户来自这些页面中的哪一个@Raghulshred如果您确实想要页面用户来自的上一个URL,您可以使用“document.referer”,检查它在您的场景中是否有效。为什么您只为goBack制作单独的组件?为什么您不能用boolean传递道具来处理您的案例?正如我所说=>此按钮将仅出现在一个特定组件中,该组件可以从两个不同的页面访问。我需要知道用户来自这些页面中的哪一个@Raghulshred如果您确实想要页面用户来自的上一个URL,您可以使用“document.referer”,检查它是否适用于您的场景。感谢您的回答@saeed我会尝试尝试尝试尝试。感谢您的回答@saeed我会尝试尝试尝试尝试。