我有一段看起来像这样的代码:
onFilterChange = ({name}: {name: string}) => {
console.log(`entered onFilterChange and name is ${name}` );
}
对于这一个论点,它编译并运行。
但是,如果我要添加另一个论点:
onFilterChange = ({name}: {name: string}, {value}: {value: string}) => {
console.log(`entered onFilterChange and name is ${name} and value is ${value}` );
}
虽然它确实编译,但在运行时会出错: TypeError:_b未定义
上面的函数调用如下:
this.props.onChange({name, value});
所以我没有看到明显的东西?我发现网上的一些例子都只显示了一个论点 - 所以它有效。 感谢
答案 0 :(得分:1)
因此,您的签名和调用函数的方式不匹配。您需要执行以下任一操作之一:
// Keep signature and change the way you invoke:
onFilterChange = ({name}: {name: string}, {value}: {value: string})
onFilterChange({name}, {value}) <-- as separate arguments
或者
// Change signature so it takes only one argument:
onFilterChange = ({name, value}: {name: string, value: string})
onFilterChange({name, value}) <-- as single argument
答案 1 :(得分:0)
你错误地使用了对象解构。因为该函数只有一个参数,即具有name
和value
属性的对象。因此你必须这样做:
onFilterChange = ({name, value}: {name: string, value: string }) => {
console.log(`entered onFilterChange and name is ${name} and value is ${value}`);
}