Ошибка типа поддержки: неверная поддержка `onClick` типа` object` предоставлена ​​для ButtonBase`, ожидаемая функция ` - PullRequest
1 голос
/ 05 апреля 2019
<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`

это сделалне очень помогает Неудачный тип реквизита: неверный реквизит `onClick` типа` объект`, переданный в `Button`, ожидаемый` function`

1 Ответ

1 голос
/ 05 апреля 2019

Это сбой, потому что как только вы передаете параметр в функцию, вы вызываете его, и поэтому он теперь возвращает значение (и, таким образом, становится 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')))
...