美文网首页
正确使用setState

正确使用setState

作者: 湾湾_moon | 来源:发表于2020-08-28 14:52 被阅读0次

1、参数

setState(partialState,callback)
partialState:object|function

用于产生与当前state合并的子集

callback

state更新后立即执行的回调函数

2、setState更新(异步更新、同步更新)

在合成事件中异步更新

import React, { Component } from 'react'

export default class test extends Component {
    constructor(props) {
        super(props)
        this.state = {
            num: 0
        }
    }
    changeNumInner = () => {
        this.setState({
            num: this.state.num + 1
        })
        console.log('this.state.num', this.state.num)
    }
    changeNum = () => {
        this.changeNumInner()
    }

    render() {
        const { num } = this.state
        return (
            <div>
                <button onClick={this.changeNum}>{num}</button>
            </div>
        )
    }
}

在setTimeout中同步更新

changeNum = () => {
    setTimeout(() => {
        this.changeNumInner()
    }, 0)
}

在原生事件中同步更新

componentDidMount() {
    const ele = document.getElementById('xx')
    ele.addEventListener('click', this.changeNumInner, false)
}

利用setState第二个callback参数同步更新

changeNumInner = () => {
    this.setState({
        num: this.state.num + 1
    }, () => {
        console.log('立即拿到state最新值', this.state.num)
    })  
}

利用setState第二个callback参数同步更新

changeNumInner = () => {
    this.setState({
        num: this.state.num + 1
    }, () => {
        console.log('立即拿到state最新值', this.state.num)
    })  
}

State 的更新会被合并

changeNumInner = () => {
    this.setState({ num: this.state.num + 1 })
}

changeNum = () => {
    this.changeNumInner()
    this.changeNumInner()
}

实现State的链式调用

changeNumInner = () => {
    this.setState((prevState) => ({
        num: prevState.num + 1
    }))
}

相关文章

  • 正确使用setState

    1. 不要直接修改State 2. state的更新可能是异步的 3. state的更新会合并 正确使⽤setSt...

  • 正确使用setState

    1、参数 用于产生与当前state合并的子集 state更新后立即执行的回调函数 2、setState更新(异步更...

  • react问题小结(持续更新中)

    React组件会在什么时候render? state使用setState正确改变; props改变,并且符合sho...

  • RN 优化之一

    大组件使用setState ,分离成很小的模块。各用各的setState 把setState 的范围使用到最少。

  • 回调函数里面调用this.setState方法出现以下错误

    简介:React中使用setState出现:TypeError: this.setState is not a f...

  • 08react基础-react原理

    setState()更新数据 setState()更新数据是异步的 注意:使用该语法,后面的setState不要依...

  • React基础知识点总结

    本文目录: 1.React⼊⻔ 2.JSX语法 3.组件 4.正确使用setState 5.⽣命周期 6.组件复合...

  • react_08setState详解

    (一)为什么使用setState? 发现会有警告,并且页面的数字并不会更新。 : 为啥能使用setState方法?...

  • react setState

    正确地使用状态 关于 setState() 这里有三件事情需要知道 不要直接更新状态 例如,此代码不会重新渲染组件...

  • setState的函数用法

    1. this.setState不会立即生效 React中使用this.setState的对象用法时,不会立即改变...

网友评论

      本文标题:正确使用setState

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