<Link> onClick 导致我的页面刷新

IT技术 reactjs react-router
2021-05-24 08:26:10

我的网站上有一个导航栏,当它们被点击时会触发从 props 传入的函数,如下所示:

<Filter 
  filter={this.props.params.filter}
  sub={this.props.params.sub}
  search={this.props.location.search}
  fetchData={() => this.fetchData}  />

过滤组件:

<Link to={`/r/${this.props.sub}/new/${this.props.search}`} onClick={this.props.fetchData()}>
 <span className="mdl-tabs__tab is-active">New</span>
</Link>
<Link to={`/r/${this.props.sub}/rising/${this.props.search}`} onClick={this.props.fetchData()}>
 <span className="mdl-tabs__tab is-active">Rising</span>
</Link>

获取数据:

      fetchData() {
        if (this.props.params.sub) {
          if (this.props.params.filter) {
              let query = `${this.props.params.sub}/${this.props.params.filter}`;

              this.props.fetchList(query, this.props.location.search);
          }
      }
    }

我遇到的问题是,只要点击这些链接标签之一,它就会刷新整个页面。虽然这有效,但我更希望页面没有刷新。我哪里出错了?

1个回答

所以你有了答案,也许这可以帮助其他人:你忘记在组件的构造函数中绑定事件处理程序。

export default YourComponent extends Component {
  constructor(props) {
    super(props)

    this.fetchData = this.fetchData.bind(this)
  }

  fetchData() {
    ...
  }

  render() {
    return (
      ...
      <Link
        to={`/r/${this.props.sub}/new/${this.props.search}`}
        onClick={this.fetchData}
      >
        <span className="mdl-tabs__tab is-active">New</span>
      </Link>
    )

  }
}