| |
|
开发:
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详解(CDN引入、JSX、脚手架、类组件、函数组件、事件、Hooks、生命周期方法、Ref使用、注意点) -> 正文阅读 |
|
[JavaScript知识库]React详解(CDN引入、JSX、脚手架、类组件、函数组件、事件、Hooks、生命周期方法、Ref使用、注意点) |
目录 React.createElement(str,obj,innerHTML) Reactreact项目是SPA(Single web Page Application单页网页应用)项目,整个网站只有一个页面,通过路由切换页面中局部的内容,实现页面的变更。 CDN引入注意下面引入的2个文件,React负责创建元素,ReactDom负责渲染元素到其它元素中。 开发版本
压缩版本(生产环境)?
? React.createElement(str,obj,innerHTML)利用React创建元素,其中str为标签的名,obj对象上的属性为该标签上挂载的属性,innerHTML为标签内的文本内容。
? ReactDOM.render(h3,ele)其中h3为上面React.createElement的返回变量,ele为dom节点。 下面利用ReactDOM渲染h3元素到id为‘yf’的节点上。
? JSX使用前需要引入babel(使用脚手架创建会都生成好)。
?再添加babel编译(使用脚手架创建会都生成好)。
?使用可以理解为用于简化React.createElements函数。
?相当于
?注意在JSX中一层大括号相当于引用js的环境,和vue中的双重大括号相同。 注释通过一对大括号加/* */注释。
数组数组中的JSX元素必须带唯一标识key,并且可以直接渲染数组。
内联渲染样式相当于直接给style赋值一个对象,对象中的属性为css样式,小驼峰形式不加横线。
? 脚手架要求Node>=8.1和npm>=5.6。
创建项目包?注意项目名需要小写,下面react-app为项目名。
安装VScode插件?安装后输入rcc可以自动生成类组件。 JSX?提示js文件默认是只有js文件提示,想要有JSX文件提示需要像下方一样选中。 类组件类名需要是大驼峰。类组件要求必须继承父类React.Component。
接收参数
则类中this.props.name等于'yf'?。 state状态React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。React 里只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。 ?注意状态的修改和vue中的不同(vue中会自动重新渲染),react只有通过setState函数设置状态才会重新渲染。因为是重新渲染,故可以通过setState传入空对象,让之前直接通过this.state更改的状态生效。 setState(state,callback)对组件 state 的更改排入队列,并通知 React 需要使用更新后的 state 重新渲染此组件及其子组件。state是需要合并的对象(注意相当于Object.assign,不是替换),callback是state更新完后的回调函数(建议使用?
注意在调用
相当于?this.setState({counter: state.counter})先执行,再执行this.counter=this.counter+1两行代码,由于this.setState是异步的,所以每次都会将值重置。 defaultProps?
如果未提供?
如果?
this.forceUpdate(callback)强制让组件重新渲染,callback为重新渲染后的回调函数。 函数组件函数名要大驼峰写法。返回React.createElements生成的对象。
接收参数?函数组件中可以接收一个参数,该参数为一个对象,属性为组件使用时上面的属性。
?则props.name等于'yf' ? 注意点?函数组件里面不要直接写setInterval和useState中设置state值的函数,这会导致定时器越来越多,和组件不停被重新渲染。 例如下面会产生setIterval(()=>{setCount(1)})、setIterval(()=>{setCount(2)})、3、4、5...等越来越多定时器。
? 事件标签上添加on事件名=‘方法名’来绑定事件。 注意事件名大写,绑定时不能在函数后加括号,加了会在创建时执行,触发指定事件时不会被执行。 绑定this类组件中使用this需要注意this的指向,因为事件的触发都是window,this指向的是事件的调用者,故为window,所以使用时需要绑定this指向。 bind绑定this下面可以在constructor中绑定this也可以在render中绑定this。
箭头函数绑定this
事件池React对事件对象进行了包装,对象会被放入池中统一管理。这意味着包装的事件对象可以被复用,当所有事件处理函数被调用之后,其所有属性都会被置空。React17开始移除了该特性。 例如下面代码e为undefined,会报错
如果你需要在事件处理函数运行之后获取事件对象的属性,你需要调用?
? HooksReact中Hooks详解(useState、useEffect、useContext、useRef详解)_AIWWY的博客-CSDN博客 Ref使用详解https://blog.csdn.net/AIWWY/article/details/123404928 React生命周期和错误处理方法https://blog.csdn.net/AIWWY/article/details/123338490 注意点?img标签注意webpack打包工具要求本地图片使用require来引入,vue会自动生成,而react没有做处理,所以需要使用require引入。
|
|
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:46:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |