将第二个参数传递给自动采用第一个参数的函数

时间:2018-10-04 12:01:31

标签: javascript reactjs antd

函数onChange自动仅接受第一个参数(蚂蚁设计框架会传递该自动参数)。

函数调用: this.onChange

函数声明:

onChange = (automatic_argument, my_argument) => {
  //my code
}

my_argument可以是我根据调用上下文定义的任何常量。

const LivingRoomOptions = ['a', 'b', 'c'];
const DinningRoomOptions = ['d', 'e', 'f'];
const BedroomOptions = ['g', 'h', 'i'];

我想根据调用的位置,将这些常量作为第二个参数传递给onChange函数。

当我像这样this.onChange(my_argument)调用函数时,它会简单地替换automatic_argument,这很明显。

调用this.onChange(undefined, my_argument),只需插入未定义的位置即可代替automatic_argument

如何在不干扰my_argument的情况下将onChange传递到automatic_argument

antd link

请参阅此链接中的checkall部分代码。请展开代码。

3 个答案:

答案 0 :(得分:4)

基本上要将多个参数传递给处理函数,您应该在下面进行操作。

 onChange={event => this.onChange(event, my_argument)}

要获取元素的值或id,请使用event.target,例如

 onChange = (event, my_argument) => {
   console.log("value", event.target.value);
   console.log("id", event.target.id);
   //if it is checkbox then event.target.checked
   console.log("checked", event.target.checked);
 }

答案 1 :(得分:1)

您可以使用ES6 Arrow函数语法。

所以可以说直到现在您已经做到了:

<div onClick = {this.onChange} />

现在,尝试以下操作:

<div onClick = {(automatic_argument) => 
this.onChange(automatic_argument,this.my_argument)} />

答案 2 :(得分:-1)

我建议这个。

onChange = (...args) => {
    //you have access to all arguments in an array.
}

传递的参数数量无关紧要