• React组件基础


    react组件

    组件就是一个页面中的部分功能,多个组件实现完整的页面功能

    特点:可复用、独立、可组合

    react组件的创建

    • 使用函数创建组件

      • 函数名称必须以大写字母开头

      • 函数必须有返回值(返回值为null时,表示不渲染任何内容)

    1. // 使用函数创建组件
    2. function Hello() {
    3. return (
    4. <div>Hello 组件!div>
    5. )
    6. }
    7. ReactDOM.render(<Hello />, document.getElementById('root'))

    使用类创建组件

    • 类名称也必须大写开头

    • 类组件必须继承 React.component 父类,才可以使用父类中提供的方法和属性

    • 类组件必须提供 render 方法

    • render 方法必须要有返回值,表示组价的结构

    1. // 使用类创建组件
    2. class Hello extends React.Component{
    3. render() {
    4. return
      类创建组件!
    5. }
    6. }
    7. ReactDOM.render(<Hello />, document.getElementById('root'))

    抽离组件为单独 JS文件

    • 创建 Hello.js 文件

    • 在 Hello.js 中导入 React

    • 创建组件

    • 导出这个组件

    • 在index.js导入Hello 组件

    • 渲染组件

    1. //Hello.js
    2. import React from 'react'
    3. class Hello extends React.Component {
    4. render() {
    5. return (<div>Hello!div>)
    6. }
    7. }
    8. export default Hello
    9. //index.js
    10. // 导入Hello 组件
    11. import Hello from './JS/Hello.js'
    12. ReactDOM.render(<Hello />, document.getElementById('root'))

    React事件处理

    • 事件绑定

      • 语法:on + 事件名称 = {事件处理方法} --- onClick = {...}

      • React事件采用 驼峰命名法 -----onClick 、 onFocus

    1. // 函数事件绑定
    2. function Hello() {
    3. function handleClick() {
    4. console.log('点击成功');
    5. }
    6. return (
    7. <button onClick={handleClick}>点击按钮button>
    8. )
    9. }
    10. ReactDOM.render(<Hello />, document.getElementById('root'))
    • 事件对象

      • 通过事件处理程序的参数获取到事件对象

      • 不需要担心跨浏览器兼容性问题

    1. // 事件处理
    2. class Hello extends React.Component{
    3. handleClick(e) {
    4. // 阻止默认行为
    5. e.preventDefault()
    6. console.log('点击成功!');
    7. }
    8. render() {
    9. return <a href='www.baidu.com' onClick={this.handleClick}>点击a>
    10. }
    11. }
    12. ReactDOM.render(<Hello />, document.getElementById('root'))

    组件状态

    • 有状态组件(类):负责页面交互,更新页面

    • 无状态组件(函数):静态结构的展示

    • 状态(state): 状态即数据,是组件内部的私有数据,只能在组件内部使用

      • state 的值是对象,表示一个组件中可以有多个数据

      • 通过 this.state 来获取状态

    1. // 组件状态
    2. class Hello extends React.Component{
    3. // constructor() {
    4. // super()
    5. // // 初始化 state
    6. // this.state = {
    7. // count : 0
    8. // }
    9. // }
    10. // 简化写法
    11. state = {
    12. count : 0
    13. }
    14. render() {
    15. return (
    16. 计算机: { this.state.count }

  • )
  • }
  • }
  • ReactDOM.render(<Hello />, document.getElementById('root'))
    • 修改状态(setState)

      • 语法:this.setState({...})

      • 注意:不能直接修改 state 中的值

      • setState作用:1.修改 State 2. 更新UI

      • 思想:数据驱动视图

    1. class Hello extends React.Component{
    2. // constructor() {
    3. // super()
    4. // // 初始化 state
    5. // this.state = {
    6. // count : 0
    7. // }
    8. // }
    9. // 简化写法
    10. state = {
    11. count : 0
    12. }
    13. render() {
    14. return (
    15. 计算机: { this.state.count }

    16. this.setState({
    17. count : this.state.count + 1
    18. })
    19. }}>+1
  • )
  • }
  • }
  • ReactDOM.render(<Hello />, document.getElementById('root'))
  • 相关阅读:
    思码逸 X 贝壳:用代码分析,升级既有效能度量体系
    11月3日 OpenCV 实战基础学习笔记——图像基本处理
    vim搜索、替换tab
    关于spring项目中,security 对websocket请求和拦截问题
    基于Java+SpringBoot+vue+elementui药品商城采购系统详细设计实现
    造成电解电容鼓包都有哪些原因?唯样商城
    【LeetCode】899. 有序队列
    React Hooks 源码学习
    qml调用js代码演示
    Ubuntu18.04安装深度学习环境(Anaconda、显卡驱动、CUDA、Tensorflow-GPU等)
  • 原文地址:https://blog.csdn.net/weixin_51642358/article/details/126329234