React 基本用法

React 基本用法

一、语法

元素

用 className 来代替 class

<div className="App"></div>

htmlfor 替换 lable 的 for 属性

<label htmlFor='0'></label>
标签

标签必须成对出现,如果是单标签,则必须自闭和

注释

推荐使用 {/* 这是注释 */} ,也可也用 //这是注释

/* 
	这是注释 
*/
//这是注释

当编译引擎,在编译 JSX 代码的时候,如果遇到了 < 那么会把它当作 HTML 代码去编译,如果遇到了 {} 就把 花括号内部的代码当作普通 JS 代码去编译

二、数组渲染

forEach遍历数组
const arrStr = ['张三','李四','王二']

arrStr.forEach(item => {
  const temp = <h5>{item}</h5>
  nameArr.push(temp)
})
数组map方法
const result = arrStr.map(item => {
  return <h5>{item}</h5>
})

//直接写到页面上
{arrStr.map(item =>{
  return <h1>{item}</h1>
})}

//一行可以简写,
//注意:在React 中,需要把 key 添加给 被 forEach 或 map 或 for 循环直接控制的元素
{arrStr.map(item => <h1 key={item}>{item}</h1>)}

三、组件

创建组件

第一种创建组件的方式,组件首字母大写

function Hello(){
    //如果在一个组件中 return 一个 null ,则表示此组件是空的,什么都不会渲染
    //return null
    //在组件中,必须 返回一个 合法的 JSX 虚拟 DOM 元素
	return <div>这是 hello 组件</div>
}

<Hello/> //调用组件
组件传值
const student = { name:'小明', age:12, sex:"男" }

//使用组件,并传统 props 数据
<Hello name={student.name} age={student.age} sex={student.sex} />

//推荐使用 ES6 的展开运算符
<Hello {...student} />

function Hello(props){
    console.log(props)
    return <div>这是 hello 组件 {props.name} </div>
}

注意:不论是 Vue 还是 React,组件中的 props 永远都是只读的,不能被重新赋值

四、class 和 实例属性

构造函数
function Person(name, age) {
    this.name = name
    this.age = age
}

//通过 new 出来的实列,访问到的属性,叫做 【实例属性】
const p1 = new Person('小明', 18)

//通过构造函数,直接访问的属性,叫做 【静态属性】
Person.sex = '男'
console.log(Person.sex, 99999)

//实例方法
Person.prototype.say = function () {
    console.log('这是 Person 的实例方法')
}
p1.say()//这是实例方法

//静态方法
Person.show = function () {
    console.log('这是 Person 的静态 show 方法')
}
Person.show()
构造类
//注意:在 class 的 {} 区间内,只能写构造器、静态方法和静态属性、实例方法
//注意:class 关键字内部,还是用原来的配方实现的
class Animal {
    //每个类都有一个构造器,默认为空的,类似于 constructor(){}
    //构造器的作用,就是每当 new 这个类的时候,必然会优先执行,构造器中的代码
    constructor(name, age) {
        //实例属性
        this.name = name
        this.age = age
    }

    //在 class 内部,通过 static 修饰的属性,就叫静态属性
    static sex = "男"

    //这是动物的实例方法
    talk() {
        console.log('动物的实例方法')
    }

    //这是动物的静态方法
    static show() {
        console.log('这是动物的静态方法')
    }
}

const p2 = new Animal('小明', 19)
p2.talk()
Animal.show()
console.log(p2, 1111)

五、继承

父类
//这是父类,可以理解成 原型对象 prototype
class Person{
    constructor(name,age){
        this.name = name
        this.age = age
    }

    //实例方法,子类都可以访问的公共函数
    show(){
        console.log('hello word')
    }
}
子类

在 class 类中,可以使用 extends 关键字,实现子类继承父类
语法 class 子类 extends 父类 {}

class Chinese extends Person{
    
    constructor(name,age,IDNumber){
      
      	super(name,age)
        //默认情况下会自动调用父类构造器,我们也可也手动调用
        //super()是一个函数,他是父类的 构造器,子类中的 super,其实就是父类中,constructor 构造器的一个引用

        this.IDNumber = IDNumber
        //语法规范,在子类中,this 只能放到 super 之后使用
    }
}

const p1 = new Chinese('小明',20,'341323200……')

console.log(p1)

p1.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值