Извините, если эта тема, вероятно, является копией другой, но я не понимаю, что я делаю не так со своим кодом + я действительно новичок, чтобы отреагировать. Я пробовал несколько решений, но ни одно из них не помогло. Я помещу сюда часть сообщения, которое я прочитал:
Проблема
Мне нужно console.info строку внутри value с помощью handleInput
Код
import React, {Component} from 'react';
import Button from './Button';
import Screen from './screen';
import './keyboard.css'
class NumberKeyboard extends Component {
constructor(props){
super(props)
this.state = {
operations: []
}
}
handleInput(props) {
const buttonValue= this.props.value;
console.info(buttonValue)
}
render() {
return (
<div className = "keyboard">
<div className = "column"></div>
<div className = "column">
<div className = "keyboardRow roundBorder" value = {"example"} onClick = {() => this.handleInput('value')}>
<Screen className = "crystalScreen"></Screen>
<Button value = "clear" >C</Button>
<Button value = "±">±</Button>
<Button value = ".">.</Button>
<Button value = "">+</Button>
</div>
<div className = "keyboardRow">
<Button value = "clear">1</Button>
<Button value = "2">2</Button>
<Button value = "3">3</Button>
<Button value = "-">-</Button>
</div>
<div className = "keyboardRow">
<Button value = "4">4</Button>
<Button value = "5">5</Button>
<Button value = "6">6</Button>
<Button value = "*">X</Button>
</div>
<div className = "keyboardRow lastRow">
<Button value = "7">7</Button>
<Button value = "8">8</Button>
<Button value = "9">9</Button>
<Button value = "%">÷</Button>
</div>
</div>
<div className = "column"></div>
</div>
)
}
}
export default NumberKeyboard;
Я пробовал несколько попыток решить эту проблему, но каждый раз максимальный результат, который у меня был, был, к сожалению, неопределенным или ошибкой.
--------------------------- ОБНОВИТЬ ---------------------- ---
В связи с посещением этого поста я хочу немного обновить и показать пример, основанный также на хуках:
import React, { useState } from 'react';
import KeyboardRow from 'src/components/keyboardRow'; /* ideally this
should contain the buttons element. i'm writing in this way just to stay
closer to the initial question */
function NumberKeyboard() {
const [selectedNumber, setSelectedNumber] = useState(0);
const selectNumber = numberSelected => {
setSelectedNumber(numberSelected)
}
return (
<>
<KeyboardRow >
<Button onClick = {selectNumber} value = "7">7</Button>
<Button onClick = {selectNumber} value = "8">8</Button>
<Button onClick = {selectNumber} value = "9">9</Button>
</KeyboardRow >
<div>{selectedNumber}<div>
</>
);
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать объект event. Что-то вроде:
handleInput = e => {
const buttonValue = e.target.value;
console.info(buttonValue);
//some logic
}
А затем вы можете добавить метод в событие onClick, также передав объект event.
onClick = {this.handleInput}
Прежде всего, ваши кнопки в настоящее время ничего не делают при нажатии, поэтому нам нужно добавить onClick к каждой из ваших кнопок: <Button onClick = {this.handleInput} value = "clear">C</Button>.
Это передаст событие в handleInput.
Чтобы получить значение нажатой кнопки, мы можем сделать:
handleInput(el) {
console.info(el.target.value);
}
Вы отправляете и получаете данные неверным способом. Во-первых, вам нужно использовать onClick = {this.handleInput} или onClick = {(e) => this.handleInput(e,'value')} вместо onClick = {() => this.handleInput('value')}, потому что вы отправляете строку 'value' в функции.
<div className = "keyboardRow roundBorder" value = {"example"} onClick = {e => this.handleInput(e, "value")} >
А затем получить следующими способами:
handleInput(e) {
console.info(e.target.value);
}
Вы можете проверить рабочий демонстрация.
e - событие, которое создается на основе вашего щелчка по текущему элементу.
Могу я кое-что спросить? Просто чтобы быть уверенным, что я действительно понимаю, что вы написали (потому что да, это работает): onClick = {e => this.handleInput (e, "value")} буква "e" означает кнопку для детей, которую я нажимаю?