Как получить текущее state внутри выполнения функций
import React from 'react';
import './App.css';
class Admin extends React.Component {
constructor() {
super();
this.state = {
inputAuthor: '',
inputText: ''
};
this.updateInputValue = this.updateInputValue.bind(this);
}
updateInputValue(evt) {
this.setState({
inputAuthor: evt.target.value,
inputText: evt.target.value
});
}
BtnClick(e) {
e.preventDefault();
const author = this.state.inputAuthor;
const text = this.state.inputText;
console.log(author + ' ' + text);
}
render() {
return (
<div className="container">
<form className="add">
<label>Автор:</label>
<input type="text" className="add__author" value="123" onChange={this.updateInputValue} />
<label>Новость:</label>
<textarea value="123" className="add__author" onChange={this.updateInputValue} ></textarea>
<button className="add__btn" onClick={this.BtnClick}>Опубликовать</button>
</form>
</div>
);
}
}
export default Admin;
ругается на эти две строки
const author = this.state.inputAuthor;
const text = this.state.inputText;
Ответы (1 шт):
Автор решения: Mikazuki
→ Ссылка
Полагаю, что дело в контексте. Если сделать BtnClick стрелочной функцией или же написать в конструкторе this.BtnClick = this.BtnClick.bind(this), всё должно заработать.
Лучше всего пользоваться стрелочными функциями, чтобы постоянно не привязывать контекст.