react 为什么重新封装了setinterval

2025-05-15 03:47:15
推荐回答(1个)
回答1:

var SetIntervalMixin = {
componentWillMount: function() {
this.intervals = [];
},
mySetInterval: function() {
this.intervals.push(setInterval.apply(null, arguments));
},
componentWillUnmount: function() {
this.intervals.map(clearInterval);
}
};

var TickTock = React.createClass({
mixins: [SetIntervalMixin], // 引用 mixin
getInitialState: function() {
return {seconds: 0};
},
componentDidMount: function() {
this.mySetInterval(this.tick, 1000); // 调用 mixin 的方法
},
tick: function() {
this.setState({seconds: this.state.seconds + 1});
},
render: function() {
return (


React has been running for {this.state.seconds} seconds.


);
}
});

ReactDOM.render(
,
document.getElementById('container')
);

好像改成这样...就能看懂了。刚看react..看到这里也懵逼了. push操作,调用的是setInterval函数,不是组件的setInterval,貌似 this.setInterval 这样才是调用本身。