react 不用插件实现数字滚动的效果示例
网络编程 2021-07-04 15:02www.168986.cn编程入门
这篇文章主要介绍了react 不用插件实现数字滚动的效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
突然要实现个数字滚动效果,网上一搜,一大堆都是用组件的。我只是想实现个简单的效果而已,决定还是自己搞搞吧。
先来看看效果吧
也不多说了,实现起来不难,有点细节问题需要自己好好琢磨一下
大概思路,
1.一开始为0,获取第一次数据,记录下来
2.和前一次数据进行对比
3.然后transform
4.收工
好了,附上代码、
export default class Number extends React.Component {
constructor(props) {
super(props);
this.state = {
prev: "000000",//初始化6位数
next: "000000",
inits: 0,
listAll: [[0],[0],[0],[0],[0],[0]],
contrlAnimationWay: false
}
this.key1 = 0
}
ponentWillUnmount() {
}
ponentDidMount() {
setTimeout(()=>{
this.run()
})
// this.setTimer()
}
// 获取数据
getNumber() {
let { inits } = this.state
let random = Math.floor(Math.random() (100000 - 1) + 1);
let prev = this.addZero(inits, 6)
let next = this.addZero(inits + 1235, 6)
this.setState({
inits: inits + 1235
})
console.log(99, prev);
console.log(99, next);
this.getData(prev, next)
}
// 数字补零
addZero(num, n) {
let len = num.toString().length;
while (len < n) {
num = "0" + num;
len++;
}
return num;
}
// 对比数据前后变化
getData(prev, next) {
let { listAll } = this.state
listAll = [];
let prevArray = prev.toString().split("");
let nextArray = next.toString().split("");
console.log(11, prevArray);
console.log(22, nextArray);
let listInit = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i = 0; i < prevArray.length; i++) {
let prevNumber = parseInt(prevArray[i]);
let nextNumber = parseInt(nextArray[i]);
let start = -1;
let end = -1;
for (let j = 0; j < listInit.length; j++) {
if (listInit[j] === prevNumber) {
start = j;
}
if (start !== -1 && listInit[j] === nextNumber) {
end = j;
break;
}
}
listAll.push(listInit.slice(start, end + 1));
console.log(listAll);
}
this.setState({
listAll
})
}
run() {
this.getNumber()
this.key1++
}
setTimer() {
setInterval(() => {
setTimeout(()=>{
this.run()
}, 0);
}, 1000 4)
}
render() {
let { listAll } = this.state;
return <div className="new-tmall911">
{/ 数字滚动