Моя проблема - всякий раз, когда я использую <Tabs>
компонент, метод onChange
вызывает функцию handleTabChange
. Компонент вызывается снова и после перерисовки useEffect
вызывается. Это заставляет мою страницу прокручиваться сверху.
Как мне убедиться, что handleChange
и useEffect
не заставляют страницу прокручиваться сверху?
export function VarianceGraph({ variancesGraphData }) {
if (variancesGraphData === undefined) {
return null;
}
const [currentProject, setCurrentProject] = useState('All');
const [currentTab, setCurrentTab] = useState('ABCD');
const projectCodes = prepareProjectCodesForConsumption(variancesGraphData);
let data = {};
function handleProjectChange(event) {
const { value } = event.target;
setCurrentProject(value);
}
function handleTabChange(event, tabValue) {
setCurrentTab(tabValue);
}
data = prepareProjectDataForRechartsConsumption(currentProject, variancesGraphData);
const hideABCD = data.ABCD.length < 1;
const hideBCDF = data['BCDF'].length < 1;
useEffect(() => {
if (hideABCD && hideBCDF) {
setCurrentTab('None');
} else if (hideABCD) {
setCurrentTab('BCDF');
} else if (hideBCDF) {
setCurrentTab('ABCD');
}
});
return (
<Grid container direction="row" justify="flex-start" alignItems="flex-start">
<Grid item xs={12}>
Я пробовал -
Мне нужноиметь setCurrentTab
в некоторой функции, чтобы не отображать бесконечно.
Я пытался использовать useLayoutEffect
, но у него такое же поведение.
Я могу написать код компонента, если потребуется. Пожалуйста помоги. Заранее спасибо.