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

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

时间:2022-10-14 09:58:20浏览次数:62  
标签:总结 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/16790607.html

相关文章

  • Vue面试题32:你用过自定义指令吗?(总结自B站up主‘前端杨村长’视频,仅供自用学习)
    分析:这是一道API题,我们可能写的自定义指令少,但是我们用的多呀,多举几个例子就行;使用://Vue2directives:{focus:{inserted(el,binding,vnode){el.f......
  • React循环DOM时为什么需要添加key
    一、React渲染流程和更新流程react渲染流程:jsx->虚拟dom->真实domreact更新流程:props/state改变->render函数重新执行->生成新的虚拟dom树->新旧虚拟dom树进......
  • 常用的Jmeter参数化技巧总结,总有一个你不知道
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试说起接口......
  • 界面组件DevExpress WinForms v22.1 - 类office功能全新升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • 用ardupilot 做无人船项目的总结
    转发:https://blog.csdn.net/W_nvshenglu/article/details/117168763?spm=1001.2014.3001.5502用apm做无人船项目,前后一共两年,无人船主控的自动巡航精度与船的整体性能基本......
  • 【学习笔记】字符串小总结
    刷了两三周的字符串题,可以说对于这些字符串算法有了一个基本的了解了,大概包括从普及到省选的字符串算法。1.哈希1.1算法基础:我们一般写的哈希就是使用的指数的形式,因为......
  • python中的字符串/列表查找函数小总结
    find()和index()首先是适用情况,'list'objecthasnoattribute'find',list没有find方法,str全有.返回的情况:查找成功都会返回查找字符串的首位的下标(索引).若......
  • SharedWorker使用总结
    最近有个需求要在浏览器页签之间实现信息共享,由第三方包处理。看过人家的效果介绍,嚯哦,闪瞎我的双眼!没见识过的技术,怎么也得看一看呀......
  • CentOS firewall简单总结
    CentOSfirewall简单总结简介防火墙是安全的重要道防线.硬件防火墙一般部署再内网的边界区域.作为最外层的防护.但是一般硬件的防火墙会比较宽松.不然会导致很多业......
  • 10月13日小总结
    今天上午,3个半小时抱了个零蛋,原因竟是没开longlong,longlong真是害死人啊。。。呕了,下次一定开。T1的暴力5分钟过样例,自信提交,直接抱零。T2的部分分没拿到,spfa的最短路......