如何创建一个倒计时组件使用& MomentJS反应
最近我不得不为我的另一个项目,创建一个倒计时,我认为它也可以成为一个好教程。所以在这篇文章里,我们将创建该组件使用和一点点的反应SVG
。
你可以在这找到最终的结果Codepen例子:
首先,我们将创建倒计时功能,然后我们将研究如何创建动画弧使用SVG
与一些花哨的功能。
创建倒计时功能
我们要用MomentJS图书馆将帮助我们解析、验证操作和显示日期和时间。
基本上我们需要的是有两个日期:
- 当前日期或
现在
- 最后的日期或
然后
当我们有这两个日期,我们可以减去现在
从然后
使用时刻
我们会得到剩余时间(或倒计时
值)。
为然后
日期,我们需要通过2字符串:
- 一个,
timeTillDate
字符串包含最后日期之前,我们想要计数(例句:2019年05年26日早上6:00) - 两个,
timeFormat
使用的字符串时刻
为了验证时间格式(在我们的例子中是:MM DD YYYY, h: MM)
你可以找到更多关于解析和格式化的字符串文档。
让我们看看这看起来在代码:
请注意:timeTillDate
,timeFormat
值将被提供在反应组件。现在我们使用它们作为例子。
从倒计时
对象,我们可以得到所有我们想要的值显示在我们的组件天
,小时
,分钟
和秒
直到我们到达然后
时间。
以后我们将添加此代码在一个JS时间间隔
就是每一秒,但在此之前让我们设置反应组件。
倒计时组件
我们将创建一个类基础组件,我们需要访问状态
组件的因为我们可以节省这四个值(天
,小时
,分钟
,秒
)。在默认情况下这些值未定义的
。
接下来,让我们创建的时间间隔
每秒钟运行和保存的值状态
的组件。我们会这样做时间间隔
在componentDidMount
生命周期方法。我们要清晰的
的时间间隔componentWillUnmount
生命周期方法,如我们不想让它运行组件后从DOM中删除。
CSS
我们现在都有倒计时功能启动并运行,所以我们风格一下:
没有花哨的CSS;我们使用flexbox
包装内物品的位置。
最后,让我们创建的SVG
弧,将周围的每个项目在我们的倒计时。
SVGCircle组件
在我们这么做之前,有一些功能,我们需要为了创建可定制的SVG
弧。我发现这些StackOverflow。你应该去读的更多信息的功能的详细说明。
基本上上面的函数计算应该如何画弧通过提供一组值为:开始和结束点,半径和角度。
回到我们的反应组件:我们要创建的svg
我们会有一个路径
标签在它将画弧(d
给它一个道具)半径
财产。内的其他4个值describeArc
函数是固定的,我们不想修改它,我们正在定制好的寻找我们的例子。
我们还需要一点CSS内的位置.countdown-item
(看到这个组件的最终结果部分):
之前添加该组件内部倒计时
组件,我们需要将值(天
,小时
,分钟
和秒
)相应的半径值。
我们需要另一个简单的函数,它将地图数量范围内(在我们的例子中日期值)到另一个范围的数字(在我们的例子中,半径)。这个函数也StackOverflow:
最终结果
最后,让我们添加新的SVGCircle
里面的每个组件.countdown-item
年代,把一切放在一起:
你所要做的现在使用倒计时
组件是通过这两个道具(timeTillDate
和timeFormat
你在金)和:
结论
这是一个有趣的小项目的反应,不是吗?
当我建造这个我学到了更多关于如何使用momentjs
图书馆和svg
画一条弧。
让我知道如果你有任何问题关于这个教程。
编码快乐!
最初发表在www.florin-pop.com