React学习笔记

1.React 核心概念

  • 组件化
  • 虚拟DOM
  • JSX

2. 起步

  • 初始化及安装
  命令行下面 
  yarn init -y
  yarn add react react-dom @babel/standalone

3.JSX

HTML语言直接写在javascript语言中,这就是JSX语法,它允许HTML和JavaScript的混写
https://reactjs.org/docs/jsx-in-depth.html 官方文档

3.1环境配置(JSX需要babel 编译后浏览器才能执行)
  • 非模块化环境
    • babel-standalone
    • 执行时编译,速度比较慢,只适用于开发测试环境
  • 模块化环境
    • 结合webpack配置babel响应的工具完成预编译
3.2语法基础
  • 只能有一个根节点
  • 多标签写到一个小括号中,防止JS自动分号,不继续执行
  • 遇到HTML标签 就用HTML规则解析
    - 单标签不能省略结束标签
  • 遇到代码块,就用JS规则执行
  • JSX允许直接在模板中插入一个JS变量
    - 如果这个变量是一个数组,则会展开这个数组的所有成员添加到模板中
  • 单标签必须 /> 例如input 标签
3.3在JSX中嵌入JS语法表达式
  • 在JSX标签中的注释最好用{/**/} 的语法,保证后面的 } 不会被注释掉
    JSX的注释要用{} 括起来
  • 在HTML中绑定语法 用{}
const user = {
           name: 'Jack',
           age: 18,
         gender: 0
         }
         const element = (
         

{1 + 1}

{'hello'}

{ // 不推荐 // 这是 jsx 和 EcmaScript 6 模板字符串混搭 } {/* * 推荐多行注释,有结尾注释,不会把}给注释掉 * 这是 jsx 和 EcmaScript 6 模板字符串混搭 */}

{`hello ${user.name}`}

姓名:{user.name}

年龄:{user.age}

性别:{user.gender === 0 ? '男' : '女'}

)
3.4 在JS表达式中嵌入JSX
   function getGreeting (user) {
       if (user) {
         return 

hello {user.name}

} return

Hello Stranger

} const element = getGreeting(null)
3.5 JSX中的节点属性
  • 动态绑定属性值 https://reactjs.org/docs/dom-elements.html
    • class使用 classname
    • tabindex 使用tabIndex
    • for 使用htmlFor
 const element = (
      
这里绑定属性外面不用加双引号
3.6 函数式组件

组件的名字首字母必须大写

3.7 class的基本使用

每一个类中都有一个构造器,如果我们程序员没有手动指定构造器,那么可以认为类中有一个隐形的空构造器,类似与constructor(){} ,构造器的作用就是,每当new这个类的时候,必然会优先执行构造器中的代码

function Student(name,age){
this.name = name
this.age = age
}
//静态属性
Student.info = 'aaa'
//实例方法
Student.prototype.say = function(){
console.log('')
//静态方法
Student.show = function(){

}
}
const s1 = new Student('andy',18)
s1.show()//**访问不到show方法,这个方法不在原型中**
Student.show();  可以访问到

在class 的{}区间内只能写构造器,静态方法,静态属性 实例方法

class Person{
   constructor(name,age){
   //实例属性
       this.name = name
       this.age = age     
   }
   //静态属性
   static info = 'aaadafasd'
   //这是实例方法 挂载到原型对象上
   eat(){
   console.log('这是一个挂载到原型对象上的实例方法'}
   //静态方法,实例访问不到
   static show(){
   console.log(
   }
}

  • 构造函数
    - 静态属性:通过构造函数 直接访问到的属性,叫做静态属性
    -
  • class类
    - 静态属性:通过static修饰的属性
3.8 class组件语法

在React中推荐使用ES6 Class 的方式定义组件

你可能感兴趣的:(React学习笔记)