javascript - onClick 立即触发

标签 javascript backbone.js reactjs

我有以下 reactJs 组件:

var Pagination = React.createClass({

  // Basic pagination
  render: function() {
    // Do we have more then one page?
    if (this.props.maxPages > 0){
      var pageLink = this.props.maxPages;
      var liElements = []

      for (var i = 1; i <= pageLink; i++) {
          liElements.push(<li key={i} id={i}><a href="#" onClick={this.props.handlePaginate(i)}>{i}</a></li>);
      }

      return (<ul className="pagination">{liElements}</ul>);
    }else{
      // Return nothing.
      return ( <div></div> );
    }
  }

});

每个 li 元素都有一个 link 元素,每个元素都有一个 onClick=... 属性。传入的函数位于主干 View 中,其中有一个 console.log(id)。当页面加载时,如果页面上有两个 li,您会得到两次 i 变量。如果您单击其中一个 li 元素,也会发生这种情况。

我的问题是 - 为什么当我为 x 个 li 元素加载页面时触发 onClick,为什么当我点击一个 li 元素时它会吐出为每个 li 元素输出 i 变量?

handlePaginate 函数看起来像

handlePaginate: function(id) {
  console.log(id); //=> 1,2 (for two li elements with id's of 1 and 2)
  return false; //=> doesn't actually stop the page from refreshing oO
}

最佳答案

原来解决这个问题的方法是:

onClick = {this.props.handlePaginate.bind(this, i)}

在链接值中,这将停止触发分页事件,并在您单击 li 元素时停止刷新页面。

关于javascript - onClick 立即触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24073392/

相关文章:

twitter-bootstrap - 单击浏览器后退按钮时, Bootstrap 模式关闭但模式下拉保持

javascript - 了解 Backbone.View

javascript - 具有 onClick 事件的 React 函数在控制台中抛出 "TypeError: Cannot read property ' handleDelete' of undefined”

javascript - 将数组传递给 javascript onclick 函数

javascript - 我可以获得有关二分搜索实现失败的反馈吗?

javascript - 我如何使用 JQuery 切换功能来切换一组矩形的可见性?

javascript - 如何从与同一元素关联的属性指令访问类 css 属性

javascript - Backbone 的 fetch() : Add only models that are new to the collection

在 array.map 内部分配时,Javascript onClick 不触发

javascript - Next.js 路由处理程序出现 404 错误