Я обновляю в useEffect, помещая данные в старый объект состояния и возвращая их в качестве значения.
Этот код фактически меняет переменную _series с useState (), но повторного рендеринга не происходитпочему?
import { TimeSeries, Pipeline, Stream, EventOut, TimeEvent, TimeRange } from "pondjs";
export default () => {
const [_series, $series] = useState(()=>{
let state = { data : { "name": "x", "columns": ["time", "value"], "points": [], "i" : 0}}
for(let i=10; i >= 0; i--){state.data.points.push( [new Date(i)-(i*100), Math.round(Math.random()*100)])}
return state;
})
useEffect(() => {
const interval = setInterval(() => {
$series(s => {
s.data.points.push( [new Date(s.data.i*1000), Math.round(Math.sin(s.data.i/10)*50+50)] )
s.data.points.shift();
s.data.i++;
return s;
});
}, 500);
}, []);
return(
<p>{
JSON.stringify((new TimeSeries(_series.data)).collection())
}</p>
)
}
Возможно, я также допустил ошибку, обновив ключ "i" внутри состояния, поэтому я пытаюсь обновить несколько частей объекта одновременно.Это плохая практика?