React入门学习笔记2

这篇具有很好参考价值的文章主要介绍了React入门学习笔记2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

jsx语法规则

  1. 定义虚拟DOM时,不要写引号。
  2. 标签中混入JS表达式时要用{ }。
  3. 样式的类名指定不要用class,要用className。
  4. 内联样式,要用style={{key:value}}的形式去写。
  5. 只有一个根标签
  6. 标签必须闭合
  7. 标签首字母
    1. )若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错
    2. )若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错。

React入门学习笔记2,React,react.js,学习,笔记


js语句和js表达式

一定注意区分:【js语句(代码)】与【js表达式】

1.表达式:一个表达式会产生一个值,可以放在任何一个需要值的地方

下面这些都是表达式:

  • (1). a
  • (2). a+b
  • (3). demo(1)
  • (4). arr.map()
  • (5). function test () {}

2.语句(代码):

下面这些都是语句(代码):

  • (1).if(){}
  • (2).for(){}
  • (3).switch(){case:xxx}

{ }中是放JS表达式!

React入门学习笔记2,React,react.js,学习,笔记


模块与组件、模块化与组件化的理解

模块(当应用的js都以模块来编写的,这个应用就是一个模块化的应用)
  1. 理解:向外提供特定功能的js程序,一般就是一个js文件e
  2. 为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂。
  3. 作用:复用 js,简化js 的编写,提高js运行效率
组件(当应用是以多组件的方式实现的,这个应用就是一个组件化的应用)
  1. 理解:用来实现局部功能效果的代码和资源的集合(html/css/js/image等等)
  2. 为什么:一个界面的功能更复杂
  3. 作用:复用编码,简化项目编码,提高运行效率

组件实践

  • 函数式组件(适用于简单组件的定义)
  • class式组件(适用于复杂组件的定义)

 记住前面说的,组件标签是大写开头哦

函数式组件

React入门学习笔记2,React,react.js,学习,笔记

执行力ReactDOM.render(<MyComponent />,document.getElementById('test'))之后,发送了什么?

        1.React解析组件标签,找到了MyComponent组件

        2.发现组件是使用函数定义的,随后调用该函数,将返回的虚拟DOM转为真实DOM,随后出现在页面中。

函数式组件函数名就是组件名

同理,类式组件类名就是组件名

类式组件

React入门学习笔记2,React,react.js,学习,笔记

执行了ReactDOM.render(<MyComponent />,document.getElementById('test'))之后,发送了什么?

        1.React解析组件标签,找到了MyComponent组件。
        2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。

        3.将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。


组件实例三大属性

1.state
实例讲解

构造函数中的this就是指向组件实例对象

只有通过组件实例调用的方法,方法中的this才不是undefined,而是指向实例对象。

如果渲染的时候在标签onClick属性中直接写this.方法,相当于直接把该方法拉出来赋给了onClick,当点击时是直接触发该方法本身而不是用组件实例去调用的。

类中的方法自动开启了局部的严格模式,所以类中方法的this为undefined。

React入门学习笔记2,React,react.js,学习,笔记

但是呢,这个样子虽然可以唱成功让我们在方法中获取到组件实例对象

我们顺理成章就会想着用this.state.isHot=!this.state.isHot去修改isHot的值。

但打印出来发现值是改了可是react不认。

React入门学习笔记2,React,react.js,学习,笔记

 React入门学习笔记2,React,react.js,学习,笔记

 状态(state)不可直接更改,我们需要借助一个内置的API更改——setState

React入门学习笔记2,React,react.js,学习,笔记

 注意这里虽然是说是setState,但它进行的是一个更新操作而不是直接替换

所以我们可以使用setState灵活修改state中的部分值

在上面的程序中

构造器调用几次?

render调用几次?

方法changeWeather调用几次?

——我们可以在它们内部的第一行进行输出操作,然后我们就可以通过控制台查看输出情况获得答案

React入门学习笔记2,React,react.js,学习,笔记React入门学习笔记2,React,react.js,学习,笔记

 所以

构造器调用几次?——1次

render调用几次?——1+n次

方法changeWeather调用几次?——点几次调几次

触发方法时,是先调用changeWeather,再进行渲染render


虽然上面那样子写很标准且没什么毛病,但是通过上面一系列我们发现实在是太麻烦了,如果我们有很多个类中方法,构造器中内容将会变得非常累赘

其实我们可以大大精简上面的代码,根本不需要用到构造器,在类中赋值语句相当于直接给类添加属性。

所以我们不需要在构造器中初始化state,我们可以把它提到外面来

而方法也不能简单地直接像上面那样写,应该使用赋值语句的形式+箭头函数。

箭头函数的特点是,在箭头函数内调用this,它会从箭头函数外面寻找this。

这样子一操作,代码就变成了这样子:

React入门学习笔记2,React,react.js,学习,笔记

理解

(1)state是组件对象最重要的属性,值是对象(可以包含多个key-value 的组合)

(2)组件被称为"状态机",通过更新组件的state来更新对应的页面显示(重新渲染组件)

注意点

1)组件中 render 方法中的this为组件实例对象
2)组件自定义的方法中 this 为 undefined,如何解决?
        a.强制绑定this:通过函数对象的 bind()
        b.箭头函数
3)状态数据,不能直接修改或更新,要通过setState


2.props
实例讲解

回顾...展开运算符的用法

React入门学习笔记2,React,react.js,学习,笔记

原生js中不能使用...展开运算符展开对象,但可以使用花括号加展开运算符进行深拷贝

直接用赋值语句的话相当于改变指向,不等于复制赋值。

React入门学习笔记2,React,react.js,学习,笔记

在babel+react的作用下,可以使用后{...对象} 展开对象,但是仅仅适用于标签属性的传递。

如果要对prop传值进行类型限定和默认值设置

(记得导包)React入门学习笔记2,React,react.js,学习,笔记

 

应像下面这样子在类里面设置:

React入门学习笔记2,React,react.js,学习,笔记

 函数式组件也可以使用props

React入门学习笔记2,React,react.js,学习,笔记

 如果要对函数组件props进行限制

则放在函数外面,直接对函数组件实例添加限制

React入门学习笔记2,React,react.js,学习,笔记

理解

(1)每个组件对象都会有props(properties的简写)属性

(2)组件标签的所有属性都保存在 props 中

作用

(1)通过标签属性从组件外向组件内传递变化的数据

(2)注意:组件内部不要修改 props 数据·(因为是只读的)

props总结

1)内部读取某个属性值

this.props.name

2)对props中的属性值进行类型限制和必要性限制

第一种方式(React v15.5开始已弃用)

React入门学习笔记2,React,react.js,学习,笔记

 内置于React中,后进行改进,把prop-types库提取出来,减轻了React的重量

第二种方式(新):

使用prop-types库进行限制(需要引入prop-types库)

React入门学习笔记2,React,react.js,学习,笔记 

3)扩展属性:将对象的所有属性通过props传递

React入门学习笔记2,React,react.js,学习,笔记

4)默认属性值

React入门学习笔记2,React,react.js,学习,笔记 

5)组件类的构造函数

React入门学习笔记2,React,react.js,学习,笔记

3.refs与事件处理
理解

组件内的标签可以定义ref属性来标识自己

编码

有三种形式

(1)字符串形式的ref

React入门学习笔记2,React,react.js,学习,笔记

注意这里是双引号 

注意,这种方法已经要被废弃了,官方不推荐使用

React入门学习笔记2,React,react.js,学习,笔记

(2)回调形式的ref

React入门学习笔记2,React,react.js,学习,笔记

 注意内联函数写法更新过程中会执行两次

React入门学习笔记2,React,react.js,学习,笔记

 可以通过定义成class的绑定函数解决(类绑定)

React入门学习笔记2,React,react.js,学习,笔记

 

(3)createRef创建ref容器

React入门学习笔记2,React,react.js,学习,笔记   

React.createRef调用后可以返回一个容器,该容器可以存储被ref所标识的节点

但!该容器是"专人专用"的!

但!这个方法是当前React最常用也是最推荐使用的。

React入门学习笔记2,React,react.js,学习,笔记文章来源地址https://www.toymoban.com/news/detail-625117.html

到了这里,关于React入门学习笔记2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React笔记-React入门

    主要是现在要改一个开源项目,需要学习下React入门,在此记录一下。 React底层核心:react.development.js React操作DOM库:react-dom.development.js 解析ES6语法:babel.min.js React.createElement() //创建元素 如创建一个节点: 如: 或如: 添加Class ES5: ES6: React中组件: 无状态组件(函数式组

    2024年02月13日
    浏览(39)
  • 章节 1:入门React.js -《React.js手把手教程:从初学者到实战高手》- 第一部分:React.js基础

    《React.js手把手教程:从初学者到实战高手》 第一部分:React.js基础 在我们开始探索 React.js 的奇妙世界之前,让我们先来认识一下这个“ 人人都在谈论 ”的家伙。你可以把 React.js 想象成是一个全栈工程师的一大碗甜品,不仅好吃,还可以让你的应用更美味!那么,究竟什么

    2024年02月11日
    浏览(52)
  • React.js快速入门教程

    React.js是一个由Facebook开发的用于构建用户界面的JavaScript库。它主要用于构建单页面应用程序(SPA),可以轻松地创建交互性强、快速响应的用户界面。 React.js的特点 1.声明式设计 −React采用声明范式,可以轻松描述应用。 2.高效 −React通过对DOM的模拟,最大限度地减少与D

    2024年01月22日
    浏览(44)
  • 后端程序员入门react笔记——react的diff算法(三)

    我们知道,react里面操作的都是虚拟dom,最后经过render渲染为真正的dom,那么为什么要提出虚拟dom这个概念呢?其实就是将逻辑和视图区分开,react的虚拟dom,就相当于mvc的c,将数据逻辑和真正的dom区分开,我们知道,对于前端来说dom操作是非常昂贵的,性能消耗最大的就是

    2024年02月22日
    浏览(45)
  • react学习笔记——1. hello react

    包含的包一共有4个,分别的作用如下: babel.min.js:可以进行ES6到ES5的语法转换;可以用于import;可以用于将jsx转换为js。注意,在开发的时候,这个转换(jsx转换js)不在线上使用,因为转换需要时间,页面可能会出现白屏。 react.development.js:react的核心代码库,引入以后,

    2024年02月14日
    浏览(33)
  • 【React Router】React Router学习笔记

    React Router 是一个基于 React 之上的强大路由库,它可以让你向应用中快速地添加视图和数据流,同时保持页面与 URL 间的同步。 React Router 知道如何为我们搭建嵌套的 UI,因此我们不用手动找出需要渲染哪些 Child 组件。 获取URL参数。当渲染组件时,React Router 会自动向 Route 组件

    2024年02月08日
    浏览(34)
  • React学习笔记01-React的基本认识

    React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决 定自己写一套,用来架设Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源 了。 轻量级的视图层库!A JavaScript library for building user interfaces React不是一个完整的

    2024年02月08日
    浏览(35)
  • React 入门学习

    React 使用称为 JSX(JavaScript 和 XML)的 HTML-in-JavaScript 语法。 熟悉 HTML 和 JavaScript 可以帮助您学习 JSX,并更好地确定应用程序中的错误是与 JavaScript 还是与 React 的更特定领域相关. React 是一个用于构建用户界面的库。 React 不是一个框架 —— 它的应用甚至不局限于 Web 开发,它

    2024年02月13日
    浏览(28)
  • React入门 学习全记录(适合和我一样有Vue经验想学习react的同学~)

    都采用了组件化开发的方式,都是基于MVVM的框架有着虚拟DOM, Vue 和 Angular 都采用了响应式设计的方式,当数据发生变化时会自动更新视图。 React 和 Angular 的复杂性也使得它们更加适合于大型和复杂的项目 Vue 是一款轻量级、渐进式、灵活且易于学习的框架,适合快速构建单

    2024年02月16日
    浏览(45)
  • React-学习笔记(8—react-router@5 and @6)

    目录 1、react-router@5 1-1、在项目中安装路由 1-2、一个项目使用一个路由器来管理路由即可 1-3、 路由组件和一般组件的区别 1-4、使用 NavLink 1-5、封装 NavLink —— MyNavLink 1-6、使用 Switch 标签 1-7、BrowserRouter解决多级路径匹配样式丢失问题 1-8、路由的模糊匹配和严格匹配 1-9、路

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包