倒计时在某些情况下不起作用
Countdown not working in some cases
我正在为主页使用倒计时脚本。它只在第一次访问时加载。然后浏览其他网页并返回主页,它没有加载。
我正在使用流星和反应。
componentDidMount () {
$(window).load(() => {
$('#clock').countdown('2016/9/9', function (event) {
var $this = $(this).html(event.strftime(''
+ '<span>%m</span> months '
+ '<span>%w</span> weeks '
+ '<span>%d</span> days '
+ '<span>%H</span> hr '
+ '<span>%M</span> min '
+ '<span>%S</span> sec'));
});
}); }
我的代码出了什么问题?
混合React和jQuery DOM操作绝对不是一个好主意。事实上,在componentDidMount
内部调用$(window).load
没有任何意义,因为componentDidMount
已经确保React组件加载到DOM中。
下面是一个简单的倒计时计时器的例子,它使用了一种纯粹的"反应式"方法。我还复制了源代码,以防链接无效:
var CountdownTimer = React.createClass({
getInitialState: function() {
return {
secondsRemaining: 0
};
},
tick: function() {
this.setState({secondsRemaining: this.state.secondsRemaining - 1});
if (this.state.secondsRemaining <= 0) {
clearInterval(this.interval);
}
},
componentDidMount: function() {
this.setState({ secondsRemaining: this.props.secondsRemaining });
this.interval = setInterval(this.tick, 1000);
},
componentWillUnmount: function() {
clearInterval(this.interval);
},
render: function() {
return (
<div>Seconds Remaining: {this.state.secondsRemaining}</div>
);
}
});
React.renderComponent(<CountdownTimer secondsRemaining="10" />, document.querySelector('#output'));
计时器由组件的状态决定,该状态通过tick
函数递减。tick
函数本身使用setInterval
每x
秒轮询一次。
我知道你的用例更复杂,因为它需要从特定的日历日期开始倒计时月、周、天等。你可以自己编写代码(不会太难),也可以找到一个合适的npm
库来为你做这件事。
相关文章:
- 为什么jQuery悬停方法在这种情况下不起作用
- 为什么push方法没有'在这种情况下不起作用:[].推
- 倒计时在某些情况下不起作用
- res.download()在我的情况下不起作用
- 为什么getElementbyId在这种情况下不起作用
- $animate.removeClass 在没有 $evalAsync inside 指令的情况下不起作用
- 为什么 array.indexOf(undefined) 在数组稀疏的情况下不起作用
- 多次点击功能在不重新加载页面的情况下不起作用
- 数据绑定在特定情况下不起作用(AngularJS)
- UI 路由加载微调器在没有$timeout的情况下不起作用
- 为什么原型JavaScript在这种情况下不起作用
- ng-重复运行次数与整数参数一样多在某些情况下不起作用
- AngularJS指令在元素具有绑定值的情况下不起作用
- 为什么隐藏/显示(向上滑动/向下滑动)在这种情况下不起作用
- $('option').mousedown 事件在少数情况下不起作用
- Angular JS自定义指令在没有ng-app指令的情况下不起作用
- Django {{ block.super }} 在特定情况下不起作用
- Ajax 请求在没有警报语句的情况下不起作用
- 替换c#函数bijJquery在不知道如何进行故障排除的情况下不起作用
- clearInterval在特定情况下不起作用(javasripct,jquery)