首页 > 其他分享 >React组件之间的通信方式总结(下)

React组件之间的通信方式总结(下)

时间:2022-10-06 09:34:41浏览次数:54  
标签:总结 react render React state props 组件

一、写一个时钟

  • 用 react 写一个每秒都可以更新一次的时钟
import React from 'react'
import ReactDOM from 'react-dom'


function tick() {
    let ele = <h1>{ new Date().toLocaleTimeString() }</h1>

    // Objects are not valid as a React child (found: Sun Aug 04 2019 20:34:51 GMT+0800 (中国标准时间)). If you meant to render a collection of children, use an array instead.
    // new Date() 是一个对象数据类型的值,React 元素不接收对象作为其子元素
    ReactDOM.render(ele, document.querySelector('#root'))
}

tick()

setInterval(tick, 1000) // 如果不包在一个函数中,时钟是不会每秒更新一次

但是 React 和 Vue 相同都是数据驱动的,但是这个时候和数据驱动没啥关系,每隔1秒钟重新创建一个 ele,然后再渲染到页面中,视图才发生变化;为了使用数据驱动,我们需要使用 React 的组件

二、React 的组件

在 React 组件中,jsx 元素(也称 react 元素)是组件的基本组成单位
在 react 中定义组件有两种方式:

  1. 函数(function)定义组件
  2. 类(class)定义组件
  • 定义组件的要求:
    1. 组件的名字首字母必须大写,为了在写 jsx 时区分原生 html 标签
    1. 组件定义后,就可以当做一个标签在 jsx 语法中使用
    1. 如果使用函数定义组件必须返回一个 jsx 元素

2.1 React 的函数组件

react 使用函数定义组件,就是声明一个函数;

  • 函数接收一个 props 参数;props 是对象,是在渲染或者父组件通过 prop(属性) 传递过来的数据;
  • 函数返回一个 jsx 元素,在组件中需要的数据可以通过 props 传入;
// 1. 函数定义组件
function Welcome(props) {
    // props 是一个对象,是使用组件时,写在组件行内的属性和属性值组成的;
    console.log(data)
    return (<div>
        <p>{props.data.name}; {props.data.age}</p>
        <p>{props.x}</p>
    </div>)
}

ReactDOM.render(<Welcome data={{name: 'mabin', age: 18}} x='hahah' />, document.querySelector('#root'));

  • ReactDOM.render() 会根据第一个参数的类型不同执行不同的操作;
    1. 如果是组件,当 render 执行时,首先会把当前组件的行内属性进行打包封装,把其封装成一个对象,把这个对象传给组件函数
    1. 执行组件函数,获取对应的虚拟 DOM 对象
    1. 把虚拟 DOM 转成真实 DOM 对象,并且插入到真实的 DOM 中

2.2 React 的 class 组件

通过 class 定义一个组件

  1. 通过 class 来定义一个组件,需要继承 React 上的 Component 这个类
  2. 在定义组件上的原型上必须有一个 render 函数,且 render 函数需要返回一个顶级的 jsx 元素

-看

标签:总结,react,render,React,state,props,组件
From: https://www.cnblogs.com/beifeng1996/p/16757035.html

相关文章

  • React-hooks面试考察知识点汇总
    Hook简介Hook出世之前React存在的问题在组件之间复用状态逻辑很难React没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到store)。有一些解决此类问题的......
  • React组件之间的通信方式总结(上)
    先来几个术语:官方我的说法对应代码ReactelementReact元素letelement=<span>A爆了</span>Component组件classAppextendsReact.Component{}无Ap......
  • 【Vue3.x】全局组件、局部组件和递归组件
    全局组件没啥讲的,和vue2一样,常规是src下components文件夹下新建全局组件,然后去入口文件main.ts里注册全局组件。然后就能在全局使用了import{createApp}from'vue'i......
  • 20年本科实习总结
     最近一周,由于学校安排,进行了为期一周的华清远见的基础嵌入式培训,主要包含Linux基础操作和ARM环境搭建,虽然一周时间实际上上不了多少东西,但这算是我第一次正式使用Linux虚......
  • Vue 组件代码优化: 公共配置抽离成 Mixin 混合( 附超详细使用教程 )
    前言有过开发经验的同学都知道,为使代码层次结构清晰分明,对于一些通用或常用的方法,都会将其抽象成公共方法或配置供使用者调用。例如:在做Python自动化测试过程中,经常需要连......
  • new project 前后端开发总结(net6+vue+mysql+redis+mq+mongodb+ES+docker)
    newproject前后端开发总结1.开发工具:vscode,vs2022,sqlserver2.前端:vue3,vite,typescript,scss,elementplus,router,asiox,vuex3.后端:.net6,automapper,autoface,sqlsu......
  • 第十三小组chap1-2学习总结
    内容概括:一.初识c语言二..学习内容概括三.易错点总结 四.总结一.初识c语言 C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C......
  • 编程的学习总结
    一,实验代码   #include<stdio.h>intmain(){printf("Hello,world!")}  二,设计思路 第一步:打框架第二步:算法是排序   第三步:编译,查......
  • 44th 2022/10/5 模拟赛总结31
    这次不好,大危本次打得可以说一塌糊涂,主要是比赛时,轻视题目,做得飞快,但是忽略了很多细节甚至是题目如T2,生成树的概念和子树弄混,炸裂,一个图的生成树要经过所有节点如T3,忽......
  • 第二周内容总结
    目录第二周内容总结一、剩余的部分数据类型讲解元组集合布尔值二、用户交互1、input()2、print()三、格式化输出四、运算符号1、基本运算符之数学运算符2、基本运算符之比......