React入门基础教程

React入门基础教程

React 是什么?

React 是一个声明式,高效且灵活的用于构建用户界面的 JavaScript 库。使用 React 可以将一些简短、独立的代码片段组合成复杂的 UI 界面,这些代码片段被称作“组件”

React的特点?

  1. 虚拟Dom节点
  2. 单向数据流
  3. 组件开发思维

React的语法特点

	jsx: javascript和xml (htm1)标签混合写法

作用:

  1. 在javascript中书写html模板
  2. 有且只有一个根节点
  3. class要写成className
  4. 在{}可以写JavaScript
  5. 数组里面可以直接写html标签
  6. 注释用{/**/}

React的安装

//在全局安装
npm i -g create-react-app
//创建项目 myreact是你创建的项目名
create-react-app myreact

cd 进入到你的项目

cd myreact

使用npm start打开项目

npm start

当出现这个页面就表示页面创建成功了
React入门基础教程

React的注意事项

一般采用import的方式引入React,React首字母规定大些,因为jsx会默认使用大写的React

  • 会根据尖括号(<)来判断是一个html,根据花括号({)来判断是一个js
  • js中的保留字 关键字会进行转化
  • class=>className for=>htmlFor react相邻的jsx元素,
  • react元素,必须被一个标签包裹 <></>
  • style标签 必须是一个对象 style={{}} //{}表示js里面的{}表示是一个对象 注释 要用{}包裹
  • dangerouslySetInnerHTML 危险的,解析html用innerHtml的方式把内容塞进元素中

React的模板语法

1.条件渲染

(1)三元运算符
如果isLog为true则显示“欢迎回来”和“红烧肉”如果为假则显示“请登录”

 {this.state.isLog?<p>欢迎回来</p>:<p>请登录</p>}
 {this.state.isLog&&<p>红烧肉</p>}

2.列表渲染

import React, { Component } from 'react'

export default class App extends Component {
  constructor(props){
    super(props)
    this.state={
      list:['vue','react','jquery','js'],
    }
    render() {
	    return (
	      <div>
	          {this.state.list.map(item=><p key={item}>{item}</p>)}
	      </div>
	    )
	  }
  }

浏览器渲染结果为:
React入门基础教程

3.文本渲染

{2+3}
//浏览器渲染结果:5
//也可以写成:
export default class App extends Component {
  constructor(props){
    super(props)
    this.state={
     msg:"你好 react",
    }
    render() {
	    return (
	      <div>
	          {this.state.msg}
	      </div>
	    )
	  }
  }

React入门基础教程

3.事件

和普通js事件一致,需要驼峰式写法

onClick={this.sayHi}
onClick={()=>{this.sayHi(参数)
onClick={this.sayHi.bind(this,参数)

示例:

export default class App extends Component {
sayHi=(msg="china")=>{
    alert(msg)
  }
render() {
    return (
	      <div>
	      	//三种不同的写法
	          <button onClick={()=>alert('新年快乐')}>问候</button>
	          <button onClick={()=>{this.sayHi('china')}}>传参</button>
	          <button onClick={this.sayHi.bind(this,'中国人不骗中国人')}>传参2</button>
	      </div>
     )
   }
  }

4.更新状态 setState

  • 是父类提供的,用于修改状态,这种更新状态的方式,不会覆盖之前的,只会进行比较把更新的状态进行合并
  • this.setState 会刷新页面,如果不用this.setState。直接修改state 会改状态还是页面不会刷新
  • 需要改属性的话只能把属性(props)变为状态(state)
this.setState({k:v})
this.setState({k:v},()=>{console.log"执行完毕的回调函数")}
onClick={()=>{this.setState({isLog:!this.state.isLog},()=>{console.log('切换完毕');})}}

代码示例:

export default class App extends Component {
constructor(props){
    super(props)
    this.state={
      isLog:false,
    }
  }
render() {
    return (
	      <div>
	         <button onClick={()=>{
            	this.setState({isLog:!this.state.isLog},()=>{
              console.log('切换完毕');
            })
          }}>切换</button>
	      </div>
     )
   }
  }

React的组件

函数组件

 function App{
   return(
     <div></div>
 )
} 
 export default App

标题函数组件的不足

  • 没有状态 新版本有增加
  • 没有生命周期的钩子 新版本有增加
  • 函数组件中没有this

类组件

  • 类组件在渲染时会默认调用render方法
  • 类组件内有状态和钩子函数
  • 需要继承React.Component
  • React.Component 是一个基类,有生命周期,更改状态的方法
  • 继承React.Component 之后才算是一个React类。
 import React, { Component } from 'react'
 export default class App2 extends Component {
   render() {
     return (
       <div></div>
     )
   }
 }

React 的数据源(props(外部传入,不可修改) ,state(内部自带,可修改))

  • props 会把组件传入的属性or方法放在this上 ---- 取值时:this.props.name
  • this.state 状态 ---- 取值时:this.state.name

开发者工具

在 Chrome 或者 Firefox 中安装扩展 React Devtools 可以让你在浏览器开发者工具中查看 React 的组件树。

React入门基础教程
你还可以在 React DevTools 中检查 React 组件的 state 和 props。
安装 React DevTools 之后,右键点击页面的任何一个元素,然后选择“查看”,这样就能打开浏览器的开发者工具了,并且工具栏最后会多展示一个 React 的选项卡(包含 “⚛️ Components” 和 “⚛️ Profiler”)。你可以使用 “⚛️ Components” 来检查组件树。

上一篇:尚硅谷vue - 4 动态绑定class样式


下一篇:POJ 1423 斯特林