正确绑定到Javascript函数参数
我得到了一个接收两个参数的方法:正确绑定到Javascript函数参数,javascript,ecmascript-6,Javascript,Ecmascript 6,我得到了一个接收两个参数的方法: function func(param1, param2){... 我得到了一个React组件,它接收一个函数作为参数,它有关于第二个参数的信息,我想把第一个参数设置为常量 我正在做的是: let myFuncToPass = func.bind("const value", null); . . . <ComponentName funcParam = { (res) => myFuncToPass(res) } . 让myFuncToPas
function func(param1, param2){...
我得到了一个React组件,它接收一个函数作为参数,它有关于第二个参数的信息,我想把第一个参数设置为常量
我正在做的是:
let myFuncToPass = func.bind("const value", null);
.
.
.
<ComponentName funcParam = { (res) => myFuncToPass(res) }
.
让myFuncToPass=func.bind(“常量值”,null);
.
.
.
myFuncToPass(res)}
.
我希望在调用回调时,调用参数时,第一个参数是“const value”,第二个参数是res
。发生的情况是,第二个参数的res按其应该的方式接收,但第一个参数为null,而不是“const value”
我做错了什么?我想你应该这样做:
let myFuncToPass = func.bind(this, "const value");
[编辑]第一个参数不一定是this
,它完全取决于您的用例——如果func
从未在内部使用this
,那么这可能根本不重要,或者您可能更愿意将null
传递进来——您需要自己考虑这个问题
第一个参数绑定调用结果函数时此的含义,第二个参数定义传递给函数的第一个参数
[编辑]
作为一个实验:
function x() {
console.log(this);
console.log(arguments);
}
x();
x.bind({a:2}, "first argument")("second argument");
查看文档:
Bind函数的第一个参数是this
要使用部分应用程序,您应该使用babel或Ramdajs之类的函数库,或者这样编写
func.bind('irrelevant', 'const value')
第一个参数绑定此,然后跟随其余参数:@deceze I实际上正好跟随了该参数。。我看到的例子是:var addThirtySeven=addArguments.bind(null,37);然后就抄下来了。为什么它在示例中起作用,但在我的例子中不起作用?嗯,不……您正在将
“const value”
设置为this
参数,而null
用于param1
…对于“独立”函数,this
应该是null
,而不是this
。也许,但这不是独立函数,他在React中这样做,考虑到他还没有发布其余的代码,他极有可能会对国家或道具或其他东西做些什么。当然,这取决于我们在这里没有看到的细节;但是典型的模式是foo.bar.bind(foo)
,因此bar
不会丢失其上下文。将一个独立的代码<代码>栏/代码>绑定到<代码> FoO 它不属于IS,而完全不可能是我跳过的第一个结论。我已经做了一个编辑警告他考虑他绑定到代码>这个< /代码>“你必须使用巴别塔”……?