Ну, проблема здесь в том, как вы вызываете this.onInputChange: способ, которым вы вызываете метод onInputChange, получит только параметр '0'. Событие не передается в функцию:
onClick={() => {
this.onInputChange('0')
}}
Итак, вы пытаетесь получить значение '0'.target.value, которое не имеет смысла, и поэтому выдается typeError.
У вас есть четыре варианта:
Опция 1 : Получите прямой доступ к значению '0' вместо того, чтобы пытаться получить его из события, которого у вас нет. Вы уже передаете свою ценность в свою функцию. Ваша переменная 'event' уже должна иметь значение '0'. (я бы рассмотрел переименование аргумента, если вы выберете эту опцию)
Опция 2 : передать событие в функцию следующим образом:
<button
type='reset'
value='Reset'
id='reset-btn'
onClick={(event) => {
this.onInputChange(event, '0')
}}
>
//... and your method gets an additional parameter:
onInputChange = (event, value) => {
console.log('event: ', event);
// event is the onCLickEvent, value is '0'
}
Опция 3 : Вы можете поместить имя метода непосредственно в обработчик onClick, и событие будет передано автоматически. (Нижняя сторона: вы не можете добавить аргумент '0' непосредственно в качестве параметра при вызове, вместо этого вам нужно прочитать его из вашего событие, например, из атрибута значения данных)
<button
type='reset'
value='Reset'
id='reset-btn'
data-value="0"
onClick={this.onInputChange}
>
//... and your method stays the same:
onInputChange = (event) => {
console.log('event: ', event);
//event.target.dataset.value is '0'
}
Опция 4 : отправить «поддельное» событие в качестве параметра:
<button
type='reset'
value='Reset'
id='reset-btn'
onClick={() => {
this.onInputChange({target: {value: '0'}})
}}
>