Javascript 在React路由器中,是否可以在重定向用户之前执行同步操作?
在链接内部,如何在重定向到用户之前从服务器获取url 这就是我尝试过的:Javascript 在React路由器中,是否可以在重定向用户之前执行同步操作?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,在链接内部,如何在重定向到用户之前从服务器获取url 这就是我尝试过的: render() { return ( <AppContext.Consumer> {context => ( <div className="container"> // get url from server, and then navigate
render() {
return (
<AppContext.Consumer>
{context => (
<div className="container">
// get url from server, and then navigate
<Link onClick=??? to={context.generatedUrl}>
<button>
Navigate !
</button>
</Link>
</div>
)}
</AppContext.Consumer>
)
}
当然,问题是onClick函数是异步的,因此响应发生在用户被重定向之后。如何从服务器获取url,然后导航到url?使用链接是不可能的,您必须以编程方式进行路由
const Component = ({history}) => {
const handleClick = () => {
const url = await yourFunction();
history.push(url)
}
return (
<button onClick={handleClick}>Navigate !</button>
);
}
使用类
class MyComponent extends Component {
async function handleClick() {
const url = await yourFunction();
this.props.history.push(url)
}
render() {
return <button onClick={handleClick}>Navigate !</button>
}
}
谢谢你能告诉我如何在类中使用它吗?它说只能在typescript文件中使用const,如果我删除它,就只能在异步函数之外使用它。对不起,我很久没有使用类了,我又编辑了它