我正在构建一个Ionic 7和一个REact 18应用程序。
const OrderItemRecipientComponent: React.FC = () => {
...
const history = useHistory();
const [isButtonDisabled, setButtonDisabled] = useState(false);
useEffect(() => {
// This effect will run after the component re-renders
if (isButtonDisabled) {
// move on to the payment
history.push("/payment");
}
}, [isButtonDisabled, history]);
const handleSaveAndContinue = () => {
setButtonDisabled(true); // Disable the button
// add the item to the cart
addToCart(orderItem);
};
return (
<>
...
<p>
<AddressForm
contactInfo={contactInfo}
setContactInfo={setContactInfo}
/>
</p>
<IonButton expand="full" onClick={handleSaveAndContinue} disabled={isButtonDisabled}>
Pay
</IonButton>
</>
);
};
export default OrderItemRecipientComponent;
字符串
然后在App.tsx路由中定义
<IonContent className="ion-padding" scroll-y>
<IonRouterOutlet>
...
<Route exact path="/payment">
<PaymentContainer />
</Route>
</IonRouterOutlet>
</IonContent>
</IonReactRouter>
型
问题是,通常当我点击“支付”按钮时,虽然我看到我的URL中的路由发生了变化,但我并不总是看到PaymentContainer组件呈现(原始组件仍然存在)。当我在浏览器上点击“刷新”时,我确实看到正确的组件呈现。我如何纠正我的序列,以便PaymentContainer组件在我的路由发生变化时始终呈现?
1条答案
按热度按时间nxagd54h1#
基于joshua-wyllie的回答here,其中提到了github issue:你需要在你的每个页面上有一个 Package
<IonPage>
(在你的例子中作为PaymentContainer
的根)。如果这不能解决问题,您可以尝试以下方法:正如yairopro在this post中提到的那样,您可以尝试强制更新:
字符串