理解ReactJS中的.method.bind(null,..)
Understanding this.method.bind(null,...) in ReactJS?
我正在通过示例学习ReactJS(Mastering React)。在重现例子时,我对其中的几句话一无所知,希望能得到一些帮助。
Fiddle:合成组件
第一个
...
//Why are we passing null in update.bind(...)?
//Is null here equivalent to 'this'?
<TextBox label='First Name' update={this.update.bind(null,'firstName')}></TextBox>
...
第二个
更新方法需要一个键和一个值(方法定义如下)
...
update: function(key, value) {
var newState = {};
newState[key] = value;
this.setState(newState);
//this.setState({[k]:v});
},
...
但是,当使用单个参数调用它时,正确的键将使用正确的值更新。
//Aren't we supposed to pass two parameters?
this.props.update(this.refs.newText.value);
this.update.bind(null,'firstName')
,代码的意思是-为this.update
设置this
到null
,并将第一个参数设置为'firstName'
,然后当您将此引用调用到函数时,第一个参数将为'firstName'
,第二个参数可以自己设置。,我们可以简化你的例子中的代码,比如这个
var fn = function (key, value) {
console.log(key);
console.log(value);
};
var f = fn.bind(null, 'x');
f('y');
‘Bind’是如何在javascript中实现"currying"模式的一个示例。在这种情况下,它包装了update方法,因此无论何时调用update,它都为null,并且"firstName"将是第一个参数(在这种情况中为键)。
除非我遗漏了什么,否则调用更新方法时"this"的值将为null,除非您将bind()中的null替换为bind(this,"firstName")
相关文章:
- 数组在递归方法中设置为null
- 直接在函数声明上使用function.prototype.bind
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 无法获取属性'selectedIndex'的未定义引用或null引用
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 来自文本输入null的html javascript变量
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- php代码在textbox更改事件上显示null
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 在php中提交数据时,如果某些值为null,而某些值为非null,如何进行查询
- 未捕获的类型错误:无法读取属性'addEventListener'的null chrome扩展名
- 为什么localStorage[“..”]未定义,而localStorage.getItem(“..”)为null
- ajax在输入等于null时进行检查
- html+javascript:如何在某些条件下禁用dropdownlist中的null选项
- 未捕获的类型错误:无法读取属性'状态'在react中为null
- 显示&作为&在jsp中使用angularjs而不使用ng-bind-html
- contentWindow.document.body is null
- 理解ReactJS中的.method.bind(null,..)
- 为什么chrome.debugger.attach 回调函数应该像cb.bind(null,..)一样使用
- Function.prototype.bind with null 作为参数