React学习笔记11-状态(state)
1.React学习笔记01-React的基本认识2.React学习笔记02-创建React项目3.React学习笔记03-编写第一个react应用程序4.React学习笔记04-JSX语法5.React学习笔记05-类组件6.React学习笔记06-函数式组件7.React学习笔记07-组件嵌套8.React学习笔记08- 组件的样式9.React学习笔记09- 事件处理10.React学习笔记10- Ref的应用
11.React学习笔记11-状态(state)
12.React学习笔记12-循环渲染13.React学习笔记13-小案例toList(状态,状态维护,条件渲染渲染)14.React学习笔记14-dangerousSetinnerHtml指令15.React学习笔记15-setState同步异步问题16.React学习笔记16-属性props17.React学习笔记17-属性VS状态18.React学习笔记18-非受控组件19.React学习笔记19-受控组件20.React学习笔记20-父子通信(子传父)21.React学习笔记21-非父子通信(状态提升)22.React学习笔记22-订阅发布模式23.React学习笔记23-非父子通信(订阅发布模式)状态就是组件的数据,由组件自己设置和更改,也就是说由组件自己维护,使用状态
的目的就是为了在不同的状态下使组件的显示不同(自己管理)
定义状态的方法
可以在构造函数中定义也可以直接在类中通过变量的形式来定义
/* eslint-disable eqeqeq */ import React, { Component } from 'react' export default class App extends Component { /* 写法一 state = { myshow: false, } */ //写法二 constructor() { super() this.state = { myshow: false, myname: 'zzz', } } }
将状态和视图绑定的方法
通过{this.state.xxx}即可访问到对应的状态
/* eslint-disable eqeqeq */ import React, { Component } from 'react' export default class App extends Component { /* 写法一 state = { myshow: false, } */ //写法二 constructor() { super() this.state = { myshow: false, myname: 'zzz', } } render() { return ( <div> <h1>欢迎来到React开发</h1> <div>{this.state.myname}</div> </div> ) } }
修改状态的方法
this.state 是纯js对象,在vue中,data属性是利用 Object.defineProperty 处理过的,更改data的数据的时候会触发数据的 getter 和 setter从而触发对应的回调来更新视图 ,
但是React中没有做这样的处理,如果直接更改的话,react是无法得知的,所以,需要使用特殊的更改状态的方法 setState 。
/* eslint-disable eqeqeq */ import React, { Component } from 'react' export default class App extends Component { /* 写法一 state = { myshow: false, } */ //写法二 constructor() { super() this.state = { myshow: false, myname: 'zzz', } } render() { return ( <div> <h1>欢迎来到React开发</h1> <div>{this.state.myname}</div> <button onClick={ () => { this.setState({ myshow: !this.state.myshow, myname: '小明' }) } }>{this.state.myshow ? '取消收藏' : '收藏'}</button> </div> ) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix