Я изучаю React, и у меня установлен Eslint в моем проекте. Это начало давать мне ошибки вроде
Use callback in setState when referencing the previous state. (react/no-access-state-in-setstate)
Must use destructuring state assignment (react/destructuring-assignment)
Я пытался найти это, но не мог правильно понять.
Может ли кто-нибудь указать мне правильное направление с этим?
Вот мой код, который выдает ошибки:
class LoginForm extends React.Component {
state = {
data: {
email: "",
password: "",
},
loading: false,
errors: {},
};
onChange = e =>
this.setState({
data: { ...this.state.data, [e.target.name]: e.target.value },
});
onSubmit = () => {
const errors = this.validate(this.state.data);
this.setState({ errors });
if (Object.keys(errors).length === 0) {
this.setState({ loading: true });
this.props
.submit(this.state.data)
.catch(err =>
this.setState({
errors: err.response.data.errors,
loading: false,
}),
);
}
};
}
Как я понимаю, мне нужно будет деструктировать this.state
и this.props
, но как?
EDIT:
Следуя предложенным ниже советам, я закончил с этим. Все, что мне нужно исправить, это реквизит. Меня просят использовать деструктурирующее задание.
onChange = ({ target: { name, value } }) =>
this.setState(prevState => ({
data: { ...prevState.data, [name]: value }
}));
onSubmit = () => {
const { data } = this.state;
const errors = this.validate(data);
this.setState({ errors });
if (Object.keys(errors).length === 0) {
this.setState({ loading: true });
this.props
.submit(data)
.catch(err =>
this.setState({ errors: err.response.data.errors, loading: false })
);
}
};
Заранее спасибо и извините за вопрос новичка.