react的各种组件,详细介绍组件的用法和区别,让你正确在react的项目中会组件,看一下就明白

您所在的位置:网站首页 react中ref的两种用法和区别 react的各种组件,详细介绍组件的用法和区别,让你正确在react的项目中会组件,看一下就明白

react的各种组件,详细介绍组件的用法和区别,让你正确在react的项目中会组件,看一下就明白

2024-07-09 18:25| 来源: 网络整理| 查看: 265

react的组件有一下几种

1.类组件 class User extends React.Component{} 面向对象的组件   

es6创建的组件 class User extends React.Component{ constructor(props) { // constructor 是一种用于创建和初始化class创建的对象的特殊方法。 super(props) // 在一个构造方法中可以使用super关键字来调用一个父类的构造方法。继承父级的props // state状态 this.state = { msg: '我是类组件' } } // render是一个钩子函数渲染数据 这个 render 方法必须要返回一个 JSX 元素。 必须要用一个外层的 JSX 元素把所有内容包裹起来,返回并列多个 JSX 元素是不合法的. render() { // return返回的是 return ( 这个 render 方法必须要返回一个 JSX 元素。 必须要用一个外层的 JSX 元素把所有内容包裹起来,返回并列多个 JSX 元素是不合法的. {this.msg} ) } }

 

2.无状态组件(函数组件)    

没有state和this 父自定义属性,子组件用props来接收

 

// 无状态组件 第一种状态组件函数的写法, function Child(props){ return ( 无状态组件 ) }

3.ES5组件 React.createElement()

React.createElement,接受三个参数,代表节点类型的字符串type, 代表节点属性的对象props,代表节点内容 children。

4.高阶组件(高阶函数) function Hoc(child){}

window.setInterval("getmessage()",3000); function getmessage(){ window.alert("111111"); }

有点像Vue的Mixin(对象混入),封装公共模块。不过React并不提倡这种做法,所以引入了一种新的概念叫高阶组件(HOC):

高阶组件本质上是一个函数,只是这种组件(函数)接收一个组件,返回一个新的组件。

高阶函数:接受的参数是函数或者返回值是函数 如数组遍历相关的(map,ruduce),定时器,Promise,高阶组件也是高阶函数 高阶函数的作用就是实现一个更加强大动态的功能

高阶组件的作用就是实现组件复用,节省内存

// 组件一般都要引入react import React,{ Component } from 'react'; const Hoc = ( Comp ) =>{//参数首字母必须大写,必须要有返回值,在下面使用 return class banner extends Component{ //类名可以省略,省略的话标签名就是以temp或者其他的代替,必须要有返回值 banner = () => {//这里是实现某个功能的函数代码 return 'banner' } render () { return ( //将参数当做一个组件返回出去 ) } } } class A extends Component{ render () { return (

A组件

{ this.props.banner() }//在下面使用了高阶组件后,这里就可以直接使用里面的方法了 ) } } class B extends Component{ render () { return (

B组件

{ this.props.banner() } ) } } const HocA = Hoc(A)//组件名必须首字母大写,将组件名当参数传进去,这样这个组件就有高阶组件内的方法了 const HocB = Hoc(B)// 把组件当成参数,传过去 // 组件C继承,复用组件A和组件B class C extends Component{ render () { return (

C组件

//这里使用的高阶组件 ) } } // 暴露组件C export default C

5.hooks组件

Hooks 的种类 React Hooks 分为内置的和自定义的两种类型,内置的 hooks 有以下几个:

useState useEffect useContext useReducer useCallback

父子组件

import React, { useState } from 'react'; import ReactDOM from 'react-dom'; function Counter() { const [count, setCount] = useState(0); return ( setCount(count + 1)}>+ {count} setCount(count - 1)}>- ) } ReactDOM.render(, document.getElementById('root')); 子组件 import React , { useContext ,useState } from 'react'; import  { NumContext } from './fu' function Zi(  ){     // 使用上下文,通过解构赋值,使用 num 和 setNum     let {num ,setNum } = useContext(NumContext);     return (                     子组件数值{num}             {                 setNum(num+1)                }}>                   子组件点击增加数值                         ) } export default Zi; hooks的用方:React Hooks中父组件中调用子组件方法 组件的总结

类组件没有无状态的组件的性能高,无状态组件可以用hooks,使它有类组件一些用方,比如是

hook是在react16.5出现

Hooks 它是一组函数api

自定义hooks

hooks有下面的钩子

useState 相当于state let [ count,setCount ] =useState(20)

function countChange (){

setCount(count+1)

}

useEffect :(副作用)开启长连接,dom的操作。定时器 调接口

相当于三个生命周期 componentDidMount (Mounted) componentDidUpdated (Updated) componentWilldDestory(Destory) 可以做dom的

useContent

useRef

自定义hooks

Hooks 让函数组件,可以拥有state,声明周期的特性 上下文

hooks提供api,解决问题

 

额外总结       ReactDOM.render、jsx、React.createElement

1.ReactDOM.render,接受三个参数,按顺序分别是,节点元素参数element,父节点DOM元素container, 一个回调函数callback。 2.React.createElement,接受三个参数,代表节点类型的字符串type, 代表节点属性的对象props,代表节点内容 children。 3.jsx、React.createElement,返回的都是一个对象,包含了dom的相关信息,也是ReactDOM.render接受的第一个元素参数。  

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3