Redux/React 间隔的最有效解决方案
Most efficient solution for intervals in Redux/React
我正在开发一个具有多个 timers/stopwatches 的应用程序 - 多达 400 个并且担心应用程序其余部分的性能以及不必要的渲染。
所有计时器都需要使用与当地时间 (Date.now()) 偏移的时间戳,我希望所有计时器同时 increment/decrement,每秒一次。
偏移量存储在 redux 存储中。
解决方案 A
是否最好将主时间戳存储在顶级组件中并使其对每个子组件可用。然后它会每秒更新一次,间隔如下:
currentTimestampFromToplevelComponent = Math.round((Date.now() - globalOffsetFromRedux) / 1000) * 1000
然后每个组件都可以渲染这个:
elapsedTime = currentTimestampFromToplevelComponent - componentsStartingTimestamp
解决方案 B
...或者如果每个组件都有自己的间隔 运行 每 100 毫秒,性能会更好,并且每个组件都会呈现这个:
elapsedTime = Math.round(Date.now() - globalOffsetFromRedux / 1000) * 1000 - componentsStartingTimestamp
A:每秒一个间隔,但有很多 属性 更新。
B:每 100 毫秒有很多间隔,但很少 属性 更新。
none 有什么效果图吗?
据我了解:
方案A:有一个全局的elapsedTime作为一个state,这个state发生变化后,React会向下渲染到所有子组件;
解决方案 B,每个组件都有自己的 elapsedTime 作为状态,因此每个组件都会在每次状态更改时呈现自己,
我认为减少状态量总是更好。解决方案 A
我正在开发一个具有多个 timers/stopwatches 的应用程序 - 多达 400 个并且担心应用程序其余部分的性能以及不必要的渲染。
所有计时器都需要使用与当地时间 (Date.now()) 偏移的时间戳,我希望所有计时器同时 increment/decrement,每秒一次。
偏移量存储在 redux 存储中。
解决方案 A
是否最好将主时间戳存储在顶级组件中并使其对每个子组件可用。然后它会每秒更新一次,间隔如下:
currentTimestampFromToplevelComponent = Math.round((Date.now() - globalOffsetFromRedux) / 1000) * 1000
然后每个组件都可以渲染这个:
elapsedTime = currentTimestampFromToplevelComponent - componentsStartingTimestamp
解决方案 B
...或者如果每个组件都有自己的间隔 运行 每 100 毫秒,性能会更好,并且每个组件都会呈现这个:
elapsedTime = Math.round(Date.now() - globalOffsetFromRedux / 1000) * 1000 - componentsStartingTimestamp
A:每秒一个间隔,但有很多 属性 更新。 B:每 100 毫秒有很多间隔,但很少 属性 更新。
none 有什么效果图吗?
据我了解:
方案A:有一个全局的elapsedTime作为一个state,这个state发生变化后,React会向下渲染到所有子组件;
解决方案 B,每个组件都有自己的 elapsedTime 作为状态,因此每个组件都会在每次状态更改时呈现自己,
我认为减少状态量总是更好。解决方案 A