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

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

时间:2023-01-06 10:01:58浏览次数:51  
标签:总结 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/17029528.html

相关文章

  • React组件之间的通信方式总结(上)
    先来几个术语:官方我的说法对应代码ReactelementReact元素letelement=<span>A爆了</span>Component组件classAppextendsReact.Component{}无Ap......
  • 前端一面react面试题总结
    redux与mobx的区别?两者对⽐:redux将数据保存在单⼀的store中,mobx将数据保存在分散的多个store中redux使⽤plainobject保存数据,需要⼿动处理变化后的操作;mobx适⽤observ......
  • 美团前端一面必会react面试题
    state和props触发更新的生命周期分别有什么区别?state更新流程:这个过程当中涉及的函数:shouldComponentUpdate:当组件的state或props发生改变时,都会首先触发这......
  • 对一些常用RDD算子的总结
    虽然目前逐渐sql化,但是掌握RDD常用算子是做好Spark应用开发的基础,而数据转换类算子则是基础中的基础,因此学习这些算子还是很有必要的。这篇博客主要参考Spark官方文档......
  • cocos creator知识点总结
    1:比较常见的加载一个纹理  bundle.load('imgs/cocos',cc.SpriteFrame),为什么要加载个类型?从直接方面来说的话,没有类型的话,得到的是不唯一东西.举例,一个spine资源......
  • Vite 配置组件自动导入之后,模板中使用组件显示未定义
    在vite.config.ts文件中配置完自动导入组件之后,在模板中使用,WebStorm会给出一个黄色波浪线,提示我没有定义组件。虽然能够dev和build,但是一堆黄色的波浪线很影响观感......
  • 第六章、react高级
    目录十四、Redux的使用一1、javascript纯函数2、为什么需要redux3、redux的核心理念4、redux的三大原则5、redux的基本使用6、node中对ES6模块化的支持7、redux的结构化分8......
  • 函数式组件与类组件
    类组件的优势:可以定义state,用以保存自己内部的变量;函数式组件不可以,每次调用后都会销毁函数内变量在函数式组件内部不使用副作用钩子定义的变量统称为局部变量,在函数每......
  • 代码随想录day9 LeetCode 459重复的子字符串 字符串总结
    459重复的子字符串https://leetcode.cn/problems/repeated-substring-pattern/classSolution{public:int*getNext(strings){//创建next[i]为最长相等前后缀长度的......
  • 关于爬虫中几个常用库的使用方法总结
    关于爬虫中几个常用库的使用方法总结学了半个多月的爬虫了,用这个案例总结一下各个爬虫库的用法。当然后面还有更重要和更好用的方法,再等后面学到,再做总结了。1.目标......