面试题答案
一键面试在React Router v5及之前版本,可以使用history
对象来实现返回上一页:
- 首先,通过
withRouter
高阶组件或useHistory
钩子获取history
对象。- 使用
withRouter
高阶组件(常用于类组件):
- 使用
import React from'react';
import { withRouter } from'react-router-dom';
class Page2 extends React.Component {
goBack = () => {
this.props.history.goBack();
};
render() {
return (
<div>
<button onClick={this.goBack}>返回Page1</button>
</div>
);
}
}
export default withRouter(Page2);
- 使用`useHistory`钩子(常用于函数组件):
import React from'react';
import { useHistory } from'react-router-dom';
const Page2 = () => {
const history = useHistory();
const goBack = () => {
history.goBack();
};
return (
<div>
<button onClick={goBack}>返回Page1</button>
</div>
);
};
export default Page2;
在React Router v6中,使用useNavigate
钩子:
import React from'react';
import { useNavigate } from'react-router-dom';
const Page2 = () => {
const navigate = useNavigate();
const goBack = () => {
navigate(-1);
};
return (
<div>
<button onClick={goBack}>返回Page1</button>
</div>
);
};
export default Page2;