React-修改状态

在React中,状态修改必须通过setState方法进行,而非直接赋值。setState接受一个更新器函数和可选的回调,用于确保获取最新状态值。若需要基于旧状态更新,可以传递一个接受旧状态和props的函数作为setState的第一个参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 React 中不能直接修改组件的状态,需要通过 setState() 来进行修改

语法:

setState(updater[, callback])
  • updater 更新器
  • callback 更新后执行的回调函数
修改状态

比如想要将 state 中的 content 值修改为 ‘香香’

state = {
  content: '大熊'
}

通过直接修改的方式并不能触发视图的更新:

this.state.content = '香香'

需要通过 setState 来进行修改:

this.setState({
  content: '香香'
})
获取最新的状态值

因为 setState() 是异步的,所以在修改状态后不一定能获取到最新的值,如果想要获取最新的状态值可以为 setState() 提供一个回调函数,在状态更新后会去执行这个回调,可以在回调函数中获取最新的状态

示例:

this.setState({
  content: '香香'
}, () => {
  // 通回调获取最新的状态
  console.log(this.state.content)
})

setState() 的第一个参数也可以是函数,这个函数接收两个参数:第一个参数为更新前的状态值,第二个参数为 props(可获取父级组件传递的数据);当修改状态时涉及到前一个状态值时就可以使用这种形式。

this.setState((state, props) => {
  console.log(state.content, props)
  // 返回一个对象
  return {
    content: prev.content + '香香'
  }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值