Javascript 在React路由器中,是否可以在重定向用户之前执行同步操作?

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

在链接内部,如何在重定向到用户之前从服务器获取url

这就是我尝试过的:

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,如果我删除它,就只能在异步函数之外使用它。对不起,我很久没有使用类了,我又编辑了它