首页IT科技status灯闪烁怎么办(state声明式)

status灯闪烁怎么办(state声明式)

时间2025-09-22 08:47:59分类IT科技浏览4412
导读:如何定义state...

如何定义state

在类组件 中               ,在constructor()中使用this.state={}来定义

在函数组件中                       ,自React(16.8)版本以后        ,使用useState()来定义               。

function B (props) { // 定义state声明式变量 let [num, setNum] = useState(1) }

如何使用state

在类组件中               ,使用this.state访问声明式变量                       。 在函数组件中                       ,直接访问useState的结果        。

如何修改state声明式变量

在类组件中        ,使用this.setState()方法来修改       。

class A extends Component { constructor (props) { super(props) // 调用Component的构造函数 // 定义state this.state = { num: 1 } } this.setState(state=>({num: state.num + 1}), ()=> {console.log( this.state.num)}) } }

在函数组件中       ,使用useState()返回值的第二个参数(set*)方法来修改                       。

function B (props) { // 定义state声明式变量 let [num, setNum] = useState(1) const add = () => { console.log(1--- num, num) // 如果这里是React(V17)中                       ,在合成事件中是异步的               ,如果在宏任务或 Promise.then()是同步的                。 // 如果这里是React(18)       ,无论在哪里都是异步的       。 // useState()给的这种set*方法                       ,是没有callback的                      。 // setNum(num + 1) setNum(num => num + 10) console.log(2--- num, num) } }

this.setStaate()的两种写法

this.setState({},callback)当我们修改state时               ,如果旧值与新值无关,建议使用这种写法                。 this.setState((state)=>{},callback)当我们修改state时                       ,如果旧值与新值有关                       ,建议使用这种写法。

this.setState()的异步性

在React(v17/v16)中,this.setState()在合成事件(事件               ,生命周期中)是异步的;在宏任务               、promise.then()中是同步的                      。

在React(v18)中                       ,无论this.setState()在哪里都是异步的        ,这种特性               ,被称之为“并发模式               ”                       。

this.setState()定为异步是为了性能优化。

this.setState()自动合并

在同一个函数域中                       ,多个this.setState()会自动合并        ,以减少没必要的diff运算(协调运算);自动合并的规则是一种浅合并               。

声明:本站所有文章       ,如无特殊说明或标注                       ,均为本站原创发布                       。任何个人或组织               ,在未征得本站同意时       ,禁止复制                       、盗用        、采集               、发布本站内容到任何网站                       、书籍等各类媒体平台        。如若本站内容侵犯了原著者的合法权益                       ,可联系我们进行处理               。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
兼职赚钱的工作哪些兼职平台可以赚钱软件-兼职副业赚钱网站合集~