Skip to content

基础

定义 class

所有的 class 类名都使用 className 来定义

无状态组件传值

tsx
const Button = (props) => {
  return <button>{props.text}</button>
}

export const App = () => {
  return (
    <>
      <Button text="按钮" />
    </>
  )
}

有状态组件

使用 class 类定义的组件,继承至 React.Component 的组件称之为有状态组件。

有状态组件有 state 进行状态管理,同时还要 props 生命周期函数

render 方法用于渲染。

有状态组件传值

tsx
import React from 'react'

class Button extends React.Component {
  render() {
    return <button>{this.props.text}</button>
  }
}

export const App = () => {
  return (
    <>
      <Button text="按钮" />
    </>
  )
}

组件状态

tsx
import React from 'react'

class Button extends React.Component {
  constructor(props) {
    super(props)

    this.state = {
      name: '哈哈哈'
    }

    console.log(this.props)
  }
  render() {
    return <button>{this.props.text}</button>
  }
}

export const App = () => {
  return (
    <>
      <Button text="按钮" />
    </>
  )
}

更多时候最好使用无状态的组件,因为有状态组件一旦触发它的生命周期函数,就会影响性能开销

事件处理

使用 setState 来更新 state 的状态

tsx
import React from 'react'

class Button extends React.Component {
  state = {
    name: '哈哈哈',
    text: 1
  }

  setText = () => {
    this.setState({ text: this.state.text + 1 })
  }

  render() {
    return (
      <div>
        <h1>{this.state.text}</h1>
        <button onClick={this.setText}>
          {this.props.text}
          {this.state.name}
        </button>
      </div>
    )
  }
}

数据绑定

以文本框输入举例 defaultValue 可设置默认值

单选框使用 defaultChecked 设置默认值

tsx
import React from 'react'

export class App extends React.Component {
  state = {
    value: '123'
  }

  onChange = (evt) => {
    this.setState({ value: evt.target.value })
  }

  render() {
    return (
      <>
        <h1>{this.state.value}</h1>
        <input
          type="text"
          defaultValue={this.state.value}
          onChange={this.onChange}
        />
      </>
    )
  }
}