Javascript React.js组件:用户定义的属性。我做得对吗?
我刚刚开始学习React,我想知道如何存储一些任意变量。让我们以下面的例子为例:Javascript React.js组件:用户定义的属性。我做得对吗?,javascript,reactjs,Javascript,Reactjs,我刚刚开始学习React,我想知道如何存储一些任意变量。让我们以下面的例子为例: var StaffRow = React.createClass({ doubleClickTimeout: null, waitingForDoubleClick: false, doubleClick: function(e){ console.log('doubleClick'); }, singleClick: function(e){
var StaffRow = React.createClass({
doubleClickTimeout: null,
waitingForDoubleClick: false,
doubleClick: function(e){
console.log('doubleClick');
},
singleClick: function(e){
console.log('singleClick');
},
clickHandler: function(e){
if(this.waitingForDoubleClick)
{
this.waitingForDoubleClick = false;
clearTimeout(this.doubleClickTimeout);
this.doubleClick(e);
} else {
this.waitingForDoubleClick = true;
this.doubleClickTimeout = setTimeout(function() {
this.waitingForDoubleClick = false;
this.singleClick(e);
}.bind(this), 300);
}
},
render: function() {
var name = "Some Name";
return (
<li onClick={this.clickHandler} >
<span>{name}</span>
</li>
);
}
});
var StaffRow=React.createClass({
双击超时:空,
等待双击单击:false,
双击:功能(e){
log(“双击”);
},
单击:函数(e){
log('singleClick');
},
clickHandler:函数(e){
如果(此。等待双击)
{
this.waitingForDoubleClick=false;
clearTimeout(这是doubleClickTimeout);
这是双击(e);
}否则{
this.waitingForDoubleClick=true;
this.doubleClickTimeout=setTimeout(函数(){
this.waitingForDoubleClick=false;
这是一个简单的点击(e);
}.绑定(本),300);
}
},
render:function(){
var name=“Some name”;
返回(
{name}
);
}
});
我正在实现一个click/doubleclick处理程序。这很好,但我想知道,这是否是存储一些随机属性(双击超时和等待双击)的正确方法,或者是否存在污染React组件实例的一些警告,我不知道?谢谢。虽然不需要,但我会删除第2行和第3行:
doubleClickTimeout: null,
waitingForDoubleClick: false,
并将其设置为componentWillMount。原因是,如果这些是对象/数组,那么它们将由使用上述方法的所有实例共享,而componentWillMount是一个函数,因此它们将是干净的引用
componentWillMount: function(){
this.doubleClickTimeout = null;
this.waitingForDoubleClick = false;
}
经验法则是,如果它影响渲染,它必须处于状态或道具。否则,就要使用实例属性