反应.js组件:用户定义的属性.我做得对吗
React.js component: user defined properties. Am i doing it right?
我刚刚开始学习 React,我想知道如何存储一些任意变量。让我们以以下示例为例:
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>
);
}
});
我正在实现一个单击/双击处理程序。这工作得很好,但我想知道,这是否是存储一些随机属性(doubleClickTimeout 和 waitingForDoubleClick)的正确方法,或者污染 React 组件实例有一些警告,我不知道?谢谢。
虽然不是必需的,但我会删除第 2 行和第 3 行:
doubleClickTimeout: null,
waitingForDoubleClick: false,
并将它们设置在组件将挂载中。 原因是如果这些是对象/数组,它们将被使用上述的所有实例共享,而 componentWillMount 是一个函数,因此它们将是干净的引用。
componentWillMount: function(){
this.doubleClickTimeout = null;
this.waitingForDoubleClick = false;
}
经验法则是,如果它影响渲染,它必须处于状态或道具。 否则,实例属性是要走的路。
相关文章:
- 如何更改reactjs中外部/独立组件的状态或属性
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- 自定义HTML元素属性未显示-Web组件
- Ember服务在注入组件并在计算属性中使用后是未定义的
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 通过emberJS中的控制器修改组件的属性
- 无法将react组件作为属性传递给另一个组件
- 如何创建一个组件,我可以设置在 Angular 2 中的属性中获取 URL 数据
- 组件是HTML5的属性还是原型.js的东西
- 将自定义属性添加到 vuejs 组件
- 有没有更好的方法来处理窗口属性&React/Redux中的子组件
- react使用扩散属性渲染组件列表
- 如何设置组件'的属性值
- HTML代码表单Angular2组件属性
- 是否可以将服务注入Angular 1.5组件's templateUrl属性
- 手动css模块带有属性以区分组件
- 如何使用Angular 1.5组件将属性求值为字符串,这是一个自定义函数
- Ember组件:将attr绑定到每个属性中
- Reactjs基于jsx中的属性创建条件组件
- 创建可重用D3.js/jQuery数据属性组件或模块的可能性