组件状态和挂钩在浏览器上一次按钮访问后未更新



当执行window.location.href(submitSuccess为true时(并使用浏览器上一个按钮返回时,我的组件不会重新渲染。因此,submitSuccesssubmitting状态变量仍在true上,而在不刷新页面的情况下重新访问应用程序时,我需要它们再次为false

const MultipleStepForm = () => {
const [submitting, setSubmitting] = useState(false);
const [submitSuccess, setSubmitSuccess] = useState(false);
useEffect(() => {
console.log("Running!");
},[]);
useEffect(() => {
successFunction();
}, [submitSuccess]);
const successFunction = () => {
window.location.href = "https://www.example.com/other-page/";
};
return (
<div>
{(submitting) && (
<div>Submitting the form..</div>
) || (
<div><!-- Form elements in here --></div>
)}
</div>
);
});

当您使用window.location调用successFunction时,URL也会重定向到您的网页或其他域?为什么它很重要,React是一个单页应用程序(SPA(,所以如果你想更改同一域或网页中的页面,我建议你使用路由器,React有react-router或React路由器dom。

React路由器Dom

最新更新