为 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)
尝试重写调用 as an ES6 arrow function:
onClick={() => {
this.processM(downUrl);
}}
我有一个组件正在接收记录列表作为道具。我正在尝试向 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)
尝试重写调用 as an ES6 arrow function:
onClick={() => {
this.processM(downUrl);
}}