| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 【React】三大属性之state、props、ref -> 正文阅读 |
|
[JavaScript知识库]【React】三大属性之state、props、ref |
目录 1.stateReact把每一个有状态的组件都看成是一个状态机,组件内部通过state来维护组件状态的变化。 在事件中触发setState()来修改state数据,state改变后会重新进行render() 在需要对用户输入、服务器请求或者时间变化等做出响应时,使用state。 React目前支持的事件列表: 1、不能直接修改state 组件修改state,并不会重新触发render。 2、state的更新是异步的 ??调用setState时,组件state并不会立即改变,只是把要修改的状态放入事件队列当中,react会优化真正的执行时机,如果连续写多次setState,会将多次setState的状态修改合并成一次状态修改。 3、state的更新是一个合并的过程 ??当调用setState()修改组件的状态时,只需要传入发生改变的state,而不是完整的state,因为组件state的更新是一个合并的过程 state当中的某一个状态发生变化时,应该重新创建这个状态对象,而不是直接修改原来的state状态,那么当状态发生变化时,如何去创建新的状态呢,我们根据状态类型可以分为下面三种情况:? 1、状态类型为不可变类型number、string、boolean、null、undefined 2、状态类型为数组
当我们从books中截取部分元素作为新状态时,可以用数组的slice方法:
当从books中过滤部分元素后,作为新状态时,可以使用filter方法:
【注意】不要使用push,pop,shift,unshift,splice等方法修改数组类型的状态,因为这些方法都是在原数组的基础上修改的,而concat,slice,filter会返回一个新的数组。 3、状态的类型是普通对象使用es6的Object.assgin()方法
2.propsprops属性特点(1)React中的数据流是自上而下,从父组件流向子组件。 (2)子组件从父组件提供的props中获取数据,并进行渲染,一般是纯展示的组件。 (3)如果父组件的props更新,则该组件下面所有用到这个属性的子组件,都会重新进行render() (4)props是只读的,props是只读的,props是只读的。不要试图修改props,否则会报错。 (5)propTypes进行类型检查: 校验类型包括基本类型、对象、数组、枚举。
父组件给子组件传递数据:
3.Refs虽然也可以通过document.getElementById(“xxx”)来获取Dom节点,但React推荐不要直接操作Dom节点,只有用Refs才是访问组件内部Dom元素的唯一可靠方法。
React.createRef()如果是v16.3之后的React,那么可以使用这种方法。
(1)可以在类组件上使用ref属性 (2)不能在函数组件上使用ref属性,因为函数组件没有实例。 (3)可以在函数组件内部可以使用ref属性,只要它指向一个 DOM 元素或者 class 组件。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:40:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |