Целью моего небольшого эксперимента React является «очистить начальное значение this.state.numString
(выводит пустую строку), а затем объединить нажатые числа в this.state.numString
».Чтобы заставить его выполняться асинхронно, я воспользовался обратным вызовом this.setState
, где происходит конкатенация числовых строк.
class App extends Component {
state = {
numString: '12'
}
displayAndConcatNumber = (e) => {
const num = e.target.dataset.num;
this.setState({
numString: ''
}, () => {
this.setState({
numString: this.state.numString.concat(num)
})
})
}
render() {
const nums = Array(9).fill().map((item, index) => index + 1);
const styles = {padding: '1rem 0', fontFamily: 'sans-serif', fontSize: '1.5rem'};
return (
<div>
<div>
{nums.map((num, i) => (
<button key={i} data-num={num} onClick={this.displayAndConcatNumber}>{num}</button>
))}
</div>
<div style={styles}>{this.state.numString}</div>
</div>
);
}
}
Результат оказался не таким, как я ожидал;он только добавляет текущий номер, который я щелкаю, в пустую строку, а затем заменяет его на номер, который я щелкаю следующим, конкатенация номеров строк не происходит.