react组件的两种方式:函数定义,类定义

在定义一个组件之前,首先要明白一点:react元素(jsx)是react组件的最基本的组成单位

组件要求:
1,为了和react元素进行区分,组件名字首必须大写
2、组件定以后,可以像jsx元素一样使用
 
首先要导入React 和 ReactDOM
  1. import React from 'react';

第一种 函数定义一个组件:

  1.  
  1. import React from 'react';
  1. function Ws(){
  2. return <p>我是一个函数定义的组件</p>;
    }
    ReactDOM.render(<Ws/>,window.root);

定义 好的<Ws/>是<Ws></Ws>的简写 就是一个虚拟dom,是一个对象类型,里面包含定义组件时的一些值。

当使用函数定义好一个组件,使用ReactDOM.render函数将 (组件 :虚拟dom)转成真实的dom,并插入到页面。

第二中 使用类定义一个组件:

使用class定义组件的时候,首先要先从react中解构出React.Component,并继承它

  1. import React {Component} from 'react';//解构React.Component
  1. class He extends Component{ //继承Component,Component相当于React.Component
    render(){
    return <div>我是class定义的一个组件</div>
    }
    }
 
当组件是一个类定义的时候,执行ReactDOM.render函数的原理:
1、首先找到组件对应的类,并new了这个类的一个实例
2、通过实例找到原型上的render函数,让render执行
3、ReactDOM.render接收到原型上render函数retrun的虚拟的dom
4、将虚拟dom转换成真实dom,插入到页面中
 
函数式组件是静态组件:和执行普通方法一样,调取一次组件,就把组件中的内容获取到,插入到页面中,如果不重复调取组件,显示的内容不会发生任何改变
 一般组件中的内容不会再次改变的情况下,会使用函数式组件
 
详解组件的运行机制:
create-element在处理的时候,遇到一个组件,返回的对象中:type就不在是字符串标签名了,而是一个函数(类),但是属性还是存在props中

rander渲染的时候,首先判断type的类型,如果是字符串就创建一个元素标签,如果是函数或者类,就把函数执行,把props中的每一项(包含children)传递给函数,在执行函数的时候,把函数中return的JSX通过create-element转换为新的对象,把这个对象返回,再通过render渲染方式,创建dom元素,插入到容器中

 调取组件的方法:
  1. ReactDOM.render(
  2. <div>
  3. <Hes title='首页' style={{color:'red'}}/>,//单闭合 注意:这里的style是传递到组件后调用才能起到效果的
  4. <Hes></He > //双闭合
  5. </div>
  6.  
  7. window.root);
  1. import React from 'react';
  2. function Hes(props){ //props变量存储的值是一个对象,没有传递是个空对象
  3. let {title,style}=props; //结构传递的属性值
  4. return <p style={style}>{title}</p>;//首页
  5. }
    这里注意是是:凡是以props传递的属性都是在组件中调用才能起到效果

单闭合和双闭合的区别

双闭合可以写子孙元素

 获取子组件:

React.Children.map(children){

return childern

}

React.Children有很多处理数组的方法

使用react定义组件的两种方式的更多相关文章

  1. React 中的 定义组件的 两种方式

    React 中创建 Components 的方式有两种:Function and Class 定义一个组件最简单的方法就是写一个 JavaScript 函数 function Welcome(prop ...

  2. react学习笔记1之声明组件的两种方式

    //定义组件有两种方式,函数和类 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } class ...

  3. Spring定义Bean的两种方式:和@Bean

    前言:    Spring中最重要的概念IOC和AOP,实际围绕的就是Bean的生成与使用. 什么叫做Bean呢?我们可以理解成对象,每一个你想交给Spring去托管的对象都可以称之为Bean. 今天 ...

  4. react创建组件的几种方式及其区别

    react创建组件有如下几种方式 ①.函数式定义的无状态组件 ②.es5原生方式React.createClass定义的组件   ③.es6形式的extends React.Component定义的组 ...

  5. React创建组件的三种方式及其区别

    内容转载于http://www.cnblogs.com/wonyun/p/5930333.html React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归; 具体的三种方式: ...

  6. 【iOS开发-图层】自己定义图层的两种方式

    想要自己定义图层,仅仅须要构建一个类继承CALayer方法 假设让自己定义图层初始化上面就有画好的图形.有两种办法 重写drawInContext方法 自己定义的图层以下的方法.然后必须自己定义的图层 ...

  7. React创建组件的三种方式比较

    推荐文章: https://www.cnblogs.com/wonyun/p/5930333.html 创建组件的方式主要有: 1.function 方式 2.class App extends Re ...

  8. React创建组件的三种方式比较和入门实例

    推荐文章: https://www.cnblogs.com/wonyun/p/5930333.html 创建组件的方式主要有: 1.function 方式 2.class App extends Re ...

  9. React事件方法、React定义方法的几种方式、获取数据、改变数据、执行方法传值

    1.案例实现代码如下 import React, { Component } from 'react'; /** * 特别注意this,对于传值和绑定都十分重要 */ class Home4 exte ...

随机推荐

  1. [小米OJ] 11. 构建短字符串

    思路 排序后对两个字符串遍历 function solution(line) { var str = line.split(" "); var str1 = str[0].spli ...

  2. Word公式显示为{EMBED Equation.DSMT4}

    具体问题表现为: 添加了Mathtype公式后显示为{EMBED Equation.DSMT4}, 超链接显示为大花括号和描述文本, 页码显示为​ page... 具体解决方法如下,(以Office2 ...

  3. vue-cli - webpack 打包兼容 360 浏览器和 IE 浏览器

    index.html增加一行代码 <head> <meta charset="utf-8"> <meta name="viewport&qu ...

  4. gawk(awk)的用法案例

    gawk(awk)的用法案例 本文首先简单介绍一个gawk和awk的区别,然后是一点基本使用流程,最后是自己做的一个分析数据文件的脚本代码,供大家参考.另外想了解基本流程的入门知识的可以下载附件pdf ...

  5. Jenkins-slave实现并行的自动化测试

    前言 上篇文章搭建了Jenkins-slave的分布式测试环境,我一直在想一个问题,使用这种模式能不能实现并发的自动化测试?我的想法是:同一套UI自动化的测试代码,是否能够通过一个Job绑定多个sla ...

  6. JS-数组的定义

  7. 【iOS】ARC & MRC

    iOS 项目类型,是 ARC 还是 MRC 未完……

  8. Java基础之十五 泛型

    第十五章 泛型 一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 在面对对象编程语言中,多态算是一种泛化机 ...

  9. gitee+hexo搭建个人博客

    通过gitee和hexo搭建个人博客 首先准备软件: git (提供命令git) git官网 notepad++(方便编辑)notepad++官网 nodejs(hexo依赖)nodejs官网 7z( ...

  10. ubuntu18.04下安装matlab2018a

    一.下载 百度网盘链接:https://pan.baidu.com/s/1M6KafnsljmYV9_5m_1pXMw 提取玛:jp76 二.安装 下载下来的文件夹中有三个文件,分别是破解文文件与映像 ...