动画数据存储更改
Animating Data Store change
我有一个商店,它的数据每秒递增 1。
我想让我的组件为一个矩形设置动画,"fills horizontally" 随着数据的增加基本上如此:
0
[ ]
0.2 #conceptually
[= ]
0.5 #conceptually
[==== ]
0.75 #conceptually
[===== ]
问题是我的 Store 没有经过这个 'values' (0, 0.2, 0.5),相反,它每秒递增 1。
这是我的问题 -> 存储数据不会通过中间的值,因此,如果我的组件宽度接收数据,它显然会在宽度上跳跃。
我正在考虑在渲染循环中设置状态,以便我可以手动递减状态变量。但是这是不可能的,因为我无法在渲染循环中调用 setState。
MyStore = Reflux.createStore
init: ->
@listenTo MyAction, @onStart
@getAllSurvivors()
onStart: ->
@time = 10
@iter true
@trigger @survivors
healUp: (first)->
@time += 1 if not first
if not timeoutID
timeoutID = setTimeout =>
unless @time >= 100
timeoutID = false
@iter false
else
@trigger @time
,
1000
@trigger @time
MyComp = React.createClass
#link @state.time to store
render: ->
return (
<ul>
<li> { @state.time } </li>
<!-- The Problem -->
<div> This should be a loading bar as '@state.time' increments </div>
</ul>
);
我应该如何在 ReactJS 中处理这个问题?似乎让我的数据变为中间值(0.2、0.5 ...)是不好的,因为它更像是 UI 的东西而不是数据。
您的目标浏览器是什么?也许您可以使用 CSS3 快速实现您的目标?在您的 div 元素上使用它:
transition: width 2s, transform 2s;
我有一个商店,它的数据每秒递增 1。
我想让我的组件为一个矩形设置动画,"fills horizontally" 随着数据的增加基本上如此:
0
[ ]
0.2 #conceptually
[= ]
0.5 #conceptually
[==== ]
0.75 #conceptually
[===== ]
问题是我的 Store 没有经过这个 'values' (0, 0.2, 0.5),相反,它每秒递增 1。
这是我的问题 -> 存储数据不会通过中间的值,因此,如果我的组件宽度接收数据,它显然会在宽度上跳跃。
我正在考虑在渲染循环中设置状态,以便我可以手动递减状态变量。但是这是不可能的,因为我无法在渲染循环中调用 setState。
MyStore = Reflux.createStore
init: ->
@listenTo MyAction, @onStart
@getAllSurvivors()
onStart: ->
@time = 10
@iter true
@trigger @survivors
healUp: (first)->
@time += 1 if not first
if not timeoutID
timeoutID = setTimeout =>
unless @time >= 100
timeoutID = false
@iter false
else
@trigger @time
,
1000
@trigger @time
MyComp = React.createClass
#link @state.time to store
render: ->
return (
<ul>
<li> { @state.time } </li>
<!-- The Problem -->
<div> This should be a loading bar as '@state.time' increments </div>
</ul>
);
我应该如何在 ReactJS 中处理这个问题?似乎让我的数据变为中间值(0.2、0.5 ...)是不好的,因为它更像是 UI 的东西而不是数据。
您的目标浏览器是什么?也许您可以使用 CSS3 快速实现您的目标?在您的 div 元素上使用它:
transition: width 2s, transform 2s;