React-HOOK-useState

#欢迎来到React-HOOK-useState篇

语法
useState() 方法里面唯一的参数就是初始 state。不同于 class 的是,我们可以按照需要使用数字或字符串对其进行赋值,而不一定是对象,并且useState 不会自动合并更新对象。

const[state,setState]=setState(initialState);

在初始渲染期间,返回的状态 (state) 与传入的第一个参数 (initialState) 值相同。
示例:

const[count,setState]=setState(0);

我们声明了一个叫 count 的 state 变量,然后把它设为 0。

在后续的重新渲染中,useState 返回的第一个值将始终是更新后最新的 state。
示例:

function Counts(){
	const[count,setState]=setState(0);
	function handleClick1(){
		setConut(count+1)
		}
	function handleClick2(){
		setCount((preCount)=>{
			return preCount+1
	})
	}
	return(
	<div>
	<p>You clicked {count} times</p>
		<button onClick={handleClick1}>Click</button>
		<button onClick={handleClick2}>Click</button>
	</div>)
	}

这里handleClick1是通过接收一个新的state值更新;handleClick2是通过函数式更新返回新的state值。这两种方法在同步更新的时候并没有什么区别(定时器),在异步更新的时候,如果在更新新的state值的时候需要用到之前的state值时,则使用函数式更新
原因 :在进行异步更新的时候,操作state会变得频繁,react为节约性能会把多次setState合并为一次,最后在一次性的更新 state。而同步更新时操作state则不会合并。
示例:

handleClick = () => {
    this.setState({ count: this.state.count + 1 })
    this.setState({ count: this.state.count + 1 })
  }

在进行事件绑定(异步)时,两次更新state只会执行一次(count只会加1)

handleClick = () => {
    setTimeout(() => {
      this.setState({ count: this.state.count + 1 })
      this.setState({ count: this.state.count + 1 })
    }, 10000);
    //10000是防止时间过短,操作不及时
  }

在定时器中操作state,则会执行两次(count会加2)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值