为 onClick 事件列出的函数在 ReactJS 上加载时触发

Function listed for the onClick event is firing at load time on ReactJS

我有一个组件正在接收记录列表作为道具。我正在尝试向 onClick 事件添加一个函数,但要在 click 事件上执行的代码集会在组件加载后立即触发。在这种情况下,我指的是 processM 函数。我是 ReactJS 的新手,如果有任何帮助,我将不胜感激。

var TempJobTaskActions = React.createClass({
 processM: function(url){

  console.log('in processMove: ', url);

  $.ajax({
   type: 'GET',
   url: url,
   success: function(data){
   }
  });

 },
 render: function(){

  var action = null;
  var downUrl = '../MoveDown?id='+this.props.tid;
  var upUrl = '../MoveUp?id='+this.props.tid;

  if(this.props.position == "solo"){
   action = (<span></span>);
  }

  if(this.props.position == "first"){
   action = (<span><a className='cdc-link cdc-icon glyphicon glyphicon-arrow-down' 
    href='#' onClick={this.processM(downUrl)} title='Move Down'></a></span>);
  }

  if(this.props.position == "last"){
   action = (<span><a className='cdc-link cdc-icon glyphicon glyphicon-arrow-up' 
    href='#' onClick={this.processM(upUrl)} title='Move Up'></a></span>);
  }

  if(this.props.position == "middle"){
   action = (
    <div>
     <span><a className='cdc-link cdc-icon glyphicon glyphicon-arrow-up' 
      href='#' onClick={this.processM(upUrl)} title='Move Up'></a></span>
     <span><a className='cdc-link cdc-icon glyphicon glyphicon-arrow-down' 
      href='#' onClick={this.processM(downUrl)} title='Move Down'></a></span>
    </div>
   );
  } 

  return (
   <div>{action}</div>
  );
 }
});

this.processM(upUrl) 将调用函数。要发送变量,您应该像这样绑定

this.processM.bind(this, upUrl)

Here is a good example with bind

尝试重写调用 as an ES6 arrow function:

onClick={() => {
  this.processM(downUrl);
}}