当布尔值从假变为真时,如何在反应 16 中显示不同的 div?
How to show a different div in react 16 when a boolean changes from false to true?
我在 React 16 应用程序中有一个基本表单。成功提交表单后,我将变量从 false
切换到 true
,然后我想在布尔值切换后显示不同的 div。
这是我的变量声明和表单提交函数:
var formSubmitted = false;
const formObj = {};
const requestInfo = (formObj) => {
formObj.modelNumber = product.modelNumber
submitForm(formObj)
.then(value => {
formSubmitted = true;
console.log(formSubmitted);
}, reason => {
// rejection
});
};
这里是条件HTML:
<div>Always showing</div>
{ !formSubmitted &&
<div>Form has not been submitted</div>
}
{ formSubmitted &&
<div>Form submitted successfully</div>
}
表单提交成功,console.log 显示变量 formSubmitted
已成功从 false
切换到 true
,但是 HTML 是没有改变。我是 React 16 的新手,我不确定如何更新组件。
谢谢。
虽然 formSubmitted
的变量发生了变化,但没有触发任何状态或副作用,因此它没有触发 React 渲染函数,因此您期望的变化不会反映在 DOM .您可以使用 useState
来管理 formSubmitted
的布尔值,这样每个新赋值都会触发 'render' 来更新 UI。
这是一个片段:
const [formSubmitted, setFormSubmitted] = useState(false);
const formObj = {};
const requestInfo = (formObj) => {
formObj.modelNumber = product.modelNumber
submitForm(formObj)
.then(value => {
setFormSubmitted(true);
console.log(formSubmitted);
}, reason => {
// rejection
});
};
...
<div>Always showing</div>
{ !formSubmitted &&
<div>Form has not been submitted</div>
}
{ formSubmitted &&
<div>Form submitted successfully</div>
}
这应该有效。
我在 React 16 应用程序中有一个基本表单。成功提交表单后,我将变量从 false
切换到 true
,然后我想在布尔值切换后显示不同的 div。
这是我的变量声明和表单提交函数:
var formSubmitted = false;
const formObj = {};
const requestInfo = (formObj) => {
formObj.modelNumber = product.modelNumber
submitForm(formObj)
.then(value => {
formSubmitted = true;
console.log(formSubmitted);
}, reason => {
// rejection
});
};
这里是条件HTML:
<div>Always showing</div>
{ !formSubmitted &&
<div>Form has not been submitted</div>
}
{ formSubmitted &&
<div>Form submitted successfully</div>
}
表单提交成功,console.log 显示变量 formSubmitted
已成功从 false
切换到 true
,但是 HTML 是没有改变。我是 React 16 的新手,我不确定如何更新组件。
谢谢。
虽然 formSubmitted
的变量发生了变化,但没有触发任何状态或副作用,因此它没有触发 React 渲染函数,因此您期望的变化不会反映在 DOM .您可以使用 useState
来管理 formSubmitted
的布尔值,这样每个新赋值都会触发 'render' 来更新 UI。
这是一个片段:
const [formSubmitted, setFormSubmitted] = useState(false);
const formObj = {};
const requestInfo = (formObj) => {
formObj.modelNumber = product.modelNumber
submitForm(formObj)
.then(value => {
setFormSubmitted(true);
console.log(formSubmitted);
}, reason => {
// rejection
});
};
...
<div>Always showing</div>
{ !formSubmitted &&
<div>Form has not been submitted</div>
}
{ formSubmitted &&
<div>Form submitted successfully</div>
}
这应该有效。