Javascript 将特定参数传递给React中具有多个参数的函数
在React中,我创建了下面提到的函数:Javascript 将特定参数传递给React中具有多个参数的函数,javascript,reactjs,function,Javascript,Reactjs,Function,在React中,我创建了下面提到的函数: infoPrint (firstname = '--', middlename = '--', surname = '--') { console.log('Firstname: ', firstname, ', Middle name: ', middlename, ', Surname: ', surname); } 我在componentWillMount中调用此函数: componentWillMount() { var fir
infoPrint (firstname = '--', middlename = '--', surname = '--')
{
console.log('Firstname: ', firstname, ', Middle name: ', middlename, ', Surname: ', surname);
}
我在componentWillMount中调用此函数:
componentWillMount() {
var firstname = 'Naisarg';
var surname = 'Parmar';
this.infoPrint(firstname,surname);
}
我得到以下输出:
Firstname: Naisarg, Middle name: Parmar, Surname: --
但我期待这一次:
Firstname: Naisarg, Middle name: --, Surname: Parmar
通过将文本对象作为函数的参数传递,可以实现这一点:
class User extends Component {
componentWillMount() {
var firstname = 'Naisarg';
var surname = 'Parmar';
this.infoPrint({ firstname, surname });
}
infoPrint({ firstname = '--', middlename = '--', surname = '--' }) {
console.log('Firstname: ', firstname, ', Middle name: ', middlename, ', Surname: ', surname);
}
}
这是一种非常常见的模式,对可选参数有很大帮助
-
如果不希望使用对象,则必须按正确顺序传递所有参数:
class User extends Component {
componentWillMount() {
var firstname = 'Naisarg';
var surname = 'Parmar';
this.infoPrint(firstname, null, surname);
}
infoPrint(firstname = '--', middlename = '--', surname = '--') {
console.log('Firstname: ', firstname, ', Middle name: ', middlename, ', Surname: ', surname);
}
}
要实现所需功能,您需要为
middlename
参数传递--
或null
:
componentWillMount() {
var firstname = 'Naisarg';
var surname = 'Parmar';
this.infoPrint(firstname, null, surname);
this.infoPrint(firstname, '--', surname);
}
或者,您也可以通过对象参数间接传递这些参数来重构方法签名:
函数infoPrint(名称={first:'--',middle:'--',last:'--}){
log('Firstname:',name.first',中间名:',name.Middle',姓氏:',name.last);
}
infoPrint({
第一:"奈沙格",,
最后:“帕尔玛”
});
您需要将其称为this.infoPrint(firstname,null,姓氏)代码>谢谢@ITH89VT。我知道这一点。但在这种情况下,有这么多的论点,然后我只想通过特定的论点。剩下的参数将采用默认值。所以我不想传递null。像这样。infoPrint(名字、姓氏);然后看看下面的答案。作为对象传递。谢谢@GG。这是符合我要求的答案。但为什么需要在对象中传递参数。不是直接的?它不是必需的(我的意思是,可能还有其他解决方案),但是当您有可选参数时,它非常有用。您可以编写doSomething({a:1,b:2,d:4,e:5,f:6,g:8})
(所有null
)而不是doSomething({a:1,b:2,d:4,e:5,f:6,g:8})。这有点冗长,但您不必再担心以正确的顺序传递所有参数,甚至选项。此外,在传递键时,如果函数包含大量参数,则可读性更高。您所指的是解构
。当这样写出来时,您实际上是在从对象中提取项。为什么需要在对象中传递参数..而不是直接传递?如问题中所述。@NaisargParmar我已更新了我的答案,并提供了更多详细信息-这是否为您澄清了问题?