道具类型失败:提供给“ButtonBase”的“对象”类型的无效道具“onClick”,预期为“功能”
Failed prop type: Invalid prop `onClick` of type `object` supplied to `ButtonBase`, expected `function`
<Fab raised="true" size="small" color="primary" variant="extended"
onClick={props.Store.fetchFromServer}
和
this.fetchFromServer = async () => {
await console.log('test')
}
工作正常。
但是当改为关注时
<Fab raised="true" size="small" color="primary" variant="extended"
onClick={props.Store.fetchFromServer('test')}
和
this.fetchFromServer = async (val) => {
await console.log(val)
}
抛出以下错误,我错过了什么?
Failed prop type: Invalid prop `onClick` of type `object` supplied to `ButtonBase`, expected `function`
这并没有多大帮助
它失败了,因为一旦你将参数传递给函数,你就会调用它,因此它现在返回一个值(因此变成一个 object
)。解决这个问题的方法是像这样将一个匿名函数传递到 onClick()
事件中,基本上将它变成一个函数:
onClick={e => props.Store.fetchFromServer('test')}
这是一个测试示例,向您展示以不同方式调用的函数类型:
a = function (val) {}
b = async (val) => {
/* await console.log(val) */
}
console.log(typeof(a))
console.log(typeof(b))
console.log(typeof(a('test1')))
console.log(typeof(b('test2')))
console.log(typeof(() => b('test3')))
<Fab raised="true" size="small" color="primary" variant="extended"
onClick={props.Store.fetchFromServer}
和
this.fetchFromServer = async () => {
await console.log('test')
}
工作正常。
但是当改为关注时
<Fab raised="true" size="small" color="primary" variant="extended"
onClick={props.Store.fetchFromServer('test')}
和
this.fetchFromServer = async (val) => {
await console.log(val)
}
抛出以下错误,我错过了什么?
Failed prop type: Invalid prop `onClick` of type `object` supplied to `ButtonBase`, expected `function`
这并没有多大帮助
它失败了,因为一旦你将参数传递给函数,你就会调用它,因此它现在返回一个值(因此变成一个 object
)。解决这个问题的方法是像这样将一个匿名函数传递到 onClick()
事件中,基本上将它变成一个函数:
onClick={e => props.Store.fetchFromServer('test')}
这是一个测试示例,向您展示以不同方式调用的函数类型:
a = function (val) {}
b = async (val) => {
/* await console.log(val) */
}
console.log(typeof(a))
console.log(typeof(b))
console.log(typeof(a('test1')))
console.log(typeof(b('test2')))
console.log(typeof(() => b('test3')))