У меня есть простой функциональный компонент. Это просто условно визуализированная панель предупреждений с сообщением об ошибке. Форма довольно длинная, поэтому при возникновении ошибки панель визуализируется, но пользователь прокручивается до точки, где панель предупреждений находится за пределами экрана. Я хочу, чтобы страница прокручивалась до самого верха всякий раз, когда компонент отображает с ошибкой. Это должно быть window.scrollTo(0,0)
, но я не могу заставить это работать.
Я знаю, что выполняется вызов window.scrollTo
, потому что в консоли появляется сообщение «SCROLLING». Однако прокрутки на самом деле не происходит; окно остается прокрученным до нижней части формы. Я попробовал несколько предложений из других ответов, но я не могу заставить это работать; любая помощь будет оценена. Вот сокращенная версия моего компонента:
const OrderForm = ({
customer,
handleSubmit,
newCustomer,
omsAccountJwt,
showAccountSearch,
storeCode
}) => {
...
const orderState = useSelector(state => state.order);
useEffect(() => {
if (orderState.error) {
console.log('SCROLLING');
window.scrollTo(0, 0);
}
}, [orderState.error]);
...
return (
...
{orderState.error !== null && (
<AlertPanel
type="error"
text={`There was a problem processing the order: ${orderState.error}`}
/>
)}
<Formik
initialValues={{
selectedShippingAddress: defaultShippingIndex.toString(),
selectedPaymentMethod: defaultPaymentIndex.toString(),
storeCode
}}
onSubmit={(values, actions) => handleSubmit(order, values, actions)}
render={renderForm}
/>
...
)
}