Я пытаюсь обновить состояние на основе запроса об ошибке. Изначально я установил для него значение false, при ошибке обновляю его до true. но я всегда считаю это ложным. Может ли кто-нибудь помочь мне с этим. Благодарю.
Ниже приведен фрагмент кода,
class Component extends React.Component {
constructor(props) {
super(props);
this.state = {
error: false,
};
}
submit = () => {
function_1.finally(() => {
............
}).catch((request) => {
const errors = request.response.errors;
let err1;
if (errors) {
err1 = errors.find(
e => e.code === 'error_code');
}
if (err1) {
this.setState({
error: true,
});
} else {
this.setState({error: false});
}
});
};
};
render = () => {
const { error } = this.state;
console.info("error in render", error); //this is always false
};
}
Что делать, если он никогда не выполняется, если блок. Кажется, ваше состояние там обновляется.
не могли бы вы показать содержимое function_1?
@shubam Gupta: выполняется оператор журнала в блоке if (err1)





Блок catch принимает параметр error вместо доступа через request.response.errors, попробуйте вот так:
.catch((error) => {
const errorStatus = Boolean(error.find(e => e.code === 'error_code'))
this.setState({
error: errorStatus
})
})
Но я полагаю, блок catch запускается только после обнаружения ошибки, так почему бы просто не установить для состояния ошибки значение true вместо проверки error_code?
.catch(() => {
this.setState({
error: true
})
})
Не зная ничего об ответе на ошибку, мне просто кажется, что ваши условия не оцениваются как истинные в любой момент, поэтому я никогда не устанавливаю
errorнаTrue. Не могли бы вы поделиться более подробным контекстом?