react-基本使用

7/19/2020 react
  • 变量、表达式
  • class style
  • 子元素和组件
render() {
    return (
      <>
        {/* 变量 */}
        <div>{this.state.name} {this.state.age}</div>
        {/* 属性 */}
        <div>
            <img src={this.state.img} alt='' />
        </div>
        {/* 表达式 */}
        <div>{this.state.flag ? "显示" : "隐藏"}</div>
        {/* class */}
        <div className={titleStyle}>title</div>
        {/* style */}
        <div style={{'color':"red"}}>名称</div>
        {/* 原生html */}
        <p dangerouslySetInnerHTML={{__html:'<p>这是一段文字<i>斜体</i><b>粗体</b></p>' }}></p>
        {/* 加载组件 */}
        <List />
      </>
    );
  }


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  • 复杂的多分支逻辑,收敛为一个函数,通过一个专门的函数来写分支逻辑,模版中只负责调用

JSX注意事项

目标任务: 掌握JSX在实际应用时的注意事项

  1. JSX必须有一个根节点,如果没有根节点,可以使用<></>(幽灵节点)替代
  2. 所有标签必须形成闭合,成对闭合或者自闭合都可以
  3. JSX中的语法更加贴近JS语法,属性名采用驼峰命名法 class -> className for -> htmlFor
  4. JSX支持多行(换行),如果需要换行,需使用() 包裹,防止bug出现

# 函数组件


使用 JS 的函数(或箭头函数)创建的组件,就叫做函数组件

// 定义函数组件
function HelloFn () {
  return <div>这是我的第一个函数组件!</div>
}

// 定义类组件
function App () {
  return (
    <div className="App">
      {/* 渲染函数组件 */}
      <HelloFn />
      <HelloFn></HelloFn>
    </div>
  )
}
export default App
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

约定说明

  1. 组件的名称必须首字母大写,react内部会根据这个来判断是组件还是普通的HTML标签
  2. 函数组件必须有返回值,表示该组件的 UI 结构;如果不需要渲染任何内容,则返回 null
  3. 组件就像 HTML 标签一样可以被渲染到页面中。组件表示的是一段结构内容,对于函数组件来说,渲染的内容是函数的返回值就是对应的内容
  4. 使用函数名称作为组件标签名称,可以成对出现也可以自闭合

# 类组件


使用 ES6 的 class 创建的组件,叫做类(class)组件


// 引入React
import React from 'react'

// 定义类组件
class HelloC extends React.Component {
  render () {
    return <div>这是我的第一个类组件!</div>
  }
}

function App () {
  return (
    <div className="App">
      {/* 渲染类组件 */}
      <HelloC />
      <HelloC></HelloC>
    </div>
  )
}
export default App
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

约定说明

  1. 类名称也必须以大写字母开头
  2. 类组件应该继承 React.Component 父类,从而使用父类中提供的方法或属性
  3. 类组件必须提供 render 方法render 方法必须有返回值,表示该组件的 UI 结构

类组件总结

  • 编写组件其实就是编写js类或者函数
  • 定义状态必须通过state实例属性的方法,提供一个对象
  • 修改state中的任何属性,都不可以通过直接赋值,必须setState方法,这个方法来自于集成得到
更新: 8/19/2022, 2:56:36 PM