美文网首页
setState的同步和异步和betterScroll 使用

setState的同步和异步和betterScroll 使用

作者: 水晶草720 | 来源:发表于2022-03-19 08:32 被阅读0次

1. setState的异步和同步使用

setState 处于同步的逻辑中, 异步更新状态,更新真实DOM
setState 处于异步的逻辑中,同步更新状态,同步更新真实DOM
setState 接受第二个参数,第二个参数回调函数,状态和dom更新完后就会被触发

import React, { Component } from 'react'
export default class App extends Component {
    state = {
        count:1
    }
  render() {
    return (
        <div>
            {/* 页面展示2 */}
            {this.state.count} 
            <button onClick={this.handleClick1}>Add</button>
            <button onClick={this.handleClick2}>Add</button>
      </div>
    )
    }
    handleClick1=()=> {
        this.setState({ count: this.state.count + 1 }, () => {
            console.log(this.state.count)    //2
        })  
        console.log(this.state.count)                  //1
    }
    handleClick2 = () => {
        setTimeout(() => {
            this.setState({ count: this.state.count + 1 })  
            console.log(this.state.count)            //2
        },0)
    }
}

2.0 better-scroll 页面浏览器滚动条的使用

https://github.com/linYeeTracy/betterScroll

#安装
npm i better-scroll

better scroll是一个插件,旨在解决移动端的滚动情况(将来可能支持PC端)。
核心部分的灵感来自于iscroll的实现,因此better scroll的API总体上与iscroll兼容。
此外,better scroll还基于iscroll扩展了一些功能并优化了性能。
better scroll是用纯JavaScript实现的,这意味着它没有依赖关系。
编译代码的大小为46KB,压缩后为26KB,gzip后仅为7KB。better scroll是一个非常轻量级的JavaScript库。

import React, { Component } from 'react'
import BetterScroll from 'better-scroll'
export default class App extends Component {
    state = {
        list: []
    }
    render() {
        return (
            <div>
                <button onClick={() => this.getData()}>click</button>
                   <div className="divWarp" style={{"height":"200px","background":"orange","overflow":"hidden"}}>
                        <ul className="ulNorp">
                            {
                                this.state.list.map(item => <li key={item}>{item}</li>)
                            }
                        </ul>
                    </div>
            </div>
        )
    }
    getData() {
        var list = [1, 2, 3, 4, 5, 6, 7,8,9,10,11,12,13]
        this.setState({ list: list }, () => {
            new BetterScroll(".divWarp")
        })
    }
}

相关文章

网友评论

      本文标题:setState的同步和异步和betterScroll 使用

      本文链接:https://www.haomeiwen.com/subject/vtzidrtx.html