如何在 React Link 组件上使用 onClick 事件?

How to use onClick event on react Link component?

我正在使用来自 reactjs 路由器的 Link 组件,但我无法让 onClickevent 工作。这是代码:

<Link to={this.props.myroute} onClick='hello()'>Here</Link>

这是这样做的方式还是其他方式?

您将 hello() 作为字符串传递,另外 hello() 表示立即执行 hello

尝试

onClick={hello}

你应该使用这个:

<Link to={this.props.myroute} onClick={hello}>Here</Link>

或者(如果方法 hello 位于此 class):

<Link to={this.props.myroute} onClick={this.hello}>Here</Link>

更新: 对于 ES6 和最新版本,如果你想用点击方法绑定一些参数,你可以使用这个:

    const someValue = 'some';  
....  
    <Link to={this.props.myroute} onClick={() => hello(someValue)}>Here</Link>

我认为一般来说这不是一个好的模式。 Link 将 运行 您的 onClick 事件然后导航到该路线,因此导航到新路线会有轻微的延迟。更好的策略是像您所做的那样使用 'to' 属性导航到新路由,并且在新组件的 componentDidMount() 函数中,您可以触发 hello 函数或任何其他函数。它会给你相同的结果,但路线之间的过渡更加顺畅。

对于上下文,我在使用 Link 上的 onClick 事件更新我的 redux 存储时注意到了这一点,它在安装新路由之前导致了 ~.3 秒的空白屏幕延迟零件。没有涉及 api 调用,所以我很惊讶延迟这么大。但是,如果您只是控制台日志记录 'hello',则延迟可能不会很明显。

 const onLinkClick = (e) => {
    e.preventDefault();
    ---do your stuff---
    history.push('/your-route');
};

<a href='/your-route' onClick={onLinkClick}> Navigate </a>
                   or
<Link to='/your-route' onClick={onLinkClick}> Navigate </Link>