我可以通过使用函数绑定来保留默认值吗?如果没有,为什么
Can I conserve the default this by using Function.bind ? If no, why?
假设我有一个函数:
function onSomethingChanged(field, evt) {
this.validate(field, evt.target.value);
}
我有一个 React 组件,我在那里做:
<input onChanged={this.onSomethingChanged.bind(null, "username")} />
- 如果我通过这个Arg,我的
this
null
是否守恒? - 如果没有,我怎么能在不使用显式
this
(不写this.onSomethingChanged.bind(this, "username")
)的情况下保存它。 - 如果不是(再次),为什么 JavaScript 阻止了这一点?有解决方法吗?
谢谢!
不,函数的上下文(this
)将在strict mode
中null
,全局对象(window
)将在non-strict
模式下
如果您不喜欢bind
方法,可以使用 ES6 箭头函数来处理此问题:
<input onChanged={()=>this.onSomethingChanged("username")} />
或者,如果您不喜欢括号:
<input onChanged={$=>this.onSomethingChanged("username")} />
其中$
是事件对象(可以根据您的喜好替换为e
或任何其他字符)。
No.这是任何函数中的第一个参数。通过传入 null,您说这是 null。
请改为执行此操作。
<input onChanged={this.onSomethingChanged.bind(this, "username")} />
相关文章:
- 如果值为空,如何设置输入的默认值?jQuery
- JQuery BlockUI鼠标加载光标没有't在Google Chrome中返回默认值
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 如果没有其他函数链接到promise,则默认行为
- 当数组在angularjs中没有可比较的值时,如何分配默认值
- 如果用户未选中复选框或选择按钮,如何为复选框或单选按钮设置一些默认值
- 我可以通过使用函数绑定来保留默认值吗?如果没有,为什么
- ng,如果没有捕获更新的$scope值
- 从数组中删除值,用新的数组总数更新html或'$'如果没有总计
- JQuery检索数据,但如果退出,则获取默认值
- JS:如果select是默认值,则禁用复选框
- 合并可观察量 A 和 B:仅当 A 有数据时才应触发;如果数据或默认值,则从 B 获取
- 如果存在值,则使用值,否则使用 or 运算符分配默认值
- 如果会话中的属性不为 null 或默认值,则运行/打印 JavaScript Razor ASP.NET MVC
- 为什么没有比使用默认值更快
- 如果文本框为空,则将其返回到默认值
- 清除输入,模糊文本区域和默认值(如果字段为空)
- 使用javascript onblur事件默认输入框为0.00,如果没有输入值或如果一个值小于0
- 如果我们're处于默认状态,并且没有选择其他选项,则不执行任何操作.如果从其他选项中恢复到默认值,请采取措施
- 获取html中的当前光标类型(如果之前没有通过css设置光标,则为默认值[auto]!)