Я пытаюсь настроить веб-страницу, которая добавляет счет к линейной диаграмме каждые 2 минуты, и она, похоже, не работает.
Я использую линейную диаграмму из Recharts, а начальное значение scoreData - пустой список, а исходная форма {time} - {h: 0, m: 0, s: 0}.
Я использую контекст и хуки, поэтому что страница не перестанет считать, даже если пользователь по какой-то причине временно посетит другие страницы, которые я буду создавать.
Код, который я написал, выглядит следующим образом:
const Timer = () => {
const {
scoreData,
setScoreData,
time,
setTime,
interv,
setInterv,
} = useContext(BaseContext);
const addNewData = () => {
setScoreData([...score, {Some New data}])
}
const start = () => {
run();
setInterv(setInterval(run, 1000));
};
var updatedS = time.s,
updatedM = time.m,
updatedH = time.h;
const run = () => {
updatedS++;
if (updatedS === 60) {
updatedM++;
updatedS = 0;
if (updatedM % 2 == 0) {
addNewData();
console.log(scoreData.length);
}
}
if (updatedM === 60) {
updatedH++;
updatedM = 0;
}
return setTime({
s: updatedS,
m: updatedM,
h: updatedH,
});
};
return (
<div>
// The code of the line chart goes in here.
<button onClick={start}>Start</button>
<button onClick={addNewData}>Test Button</button>
</div>
)
Согласно приведенному выше коду, новые данные должны добавляться в список каждые две минуты, но диаграмма никогда не показывала никаких изменений.
Когда я подтвердил статус ScoreData с помощью console.log (scoreData.length ), консоль просто показала 0, что означает, что данные не добавляются в список.
Итак, я попробовал другой подход, сделав кнопку Test, которая вручную добавляет новые данные, и она работала нормально; список заполнялся новыми данными каждый раз, когда я его нажимал.
В этом случае, что я могу сделать, чтобы диаграмма периодически получала данные в соответствии с установленным мной временем?