美文网首页
React组件详解

React组件详解

作者: learninginto | 来源:发表于2020-03-06 23:05 被阅读0次

React组件详解

一、类组件

  1. 组件的名称必须要大写,为了区分组件和标签。

  2. 通过ES6的继承实现组件的创建,继承于React.Compont

  3. 组件内部必须要有一个render函数,render函数中必须返回一个jsx语法。

    ( jsx语法中的节点必须有唯一的根元素进行包裹。)

constructor作用:(非必要)

  1. 用来做组件的初始化
  2. 存放组件所需要的状态(存储在constructor中的this.state中)
  3. 如果有constructor,则必须要写super();
  • Demo
import React from "react";
class App extends React.Component{
    constructor(){
        super();
        //存放组件所需要的一些状态
        this.state = {
            arr:[10,20,30,40],
        }
    }
    render(){
        console.log("render")
        let {arr} = this.state;
        //必须要返回一个jsx语法
        return (
            <div>
                <ul>
                {
                    // this.state.arr.map((item,index)=>{
                    //  return <li key={index}>{item}</li>
                    // })
                    this.state.arr.map((item,index)=>(
                        <li key={index}>{item}</li>
                    ))
                }
                </ul>
            </div>
        )
    }
}
  • 推荐安装插件React Native Tools

在安装了React Native Tools之后,只需要按rcc即可初始化类组件。

React-Native-Tools.png
  • 在16以前的版本还支持这样创建组件, 但现在的项目基本上不用

需要先安装create-react-class

yarn add create-react-class -S
import React from 'react';
import ReactDOM from 'react-dom';
import createClass from 'create-react-class';

var Hello = createClass({
  render(){
    return <h1>learninginto</h1>
  }
})

ReactDOM.render(
  <Hello></Hello>,
  document.getElementById('root')
);

二、函数式组件(无状态组件)

组件名称必须要大写(小写时编译器不一定报错,但运行时会报错)

  • Demo
import React from 'react';
import ReactDOM from 'react-dom';

//组件名称必须大写
const App =(props)=> <h1>欢迎进入{props.name}的世界</h1>

ReactDOM.render(
 <App name="react" />,
  document.getElementById('root')
);

render也可以这样

ReactDOM.render(
 app({
   name:'react'
 }),
  document.getElementById('root')
);

三、高阶组件(HOC)

是一个函数,接收一个组件返回一个相对性增强的组件。

  • src/connect/createContext.js
import React, { createContext } from "react";
export let { Provider, Consumer } = createContext();
  • src/connect/index.js
import { Consumer } from "./createContext"
  • src/hoc/connect.js
import React from "react";
import {Consumer} from "../connect/createContext"

export const connect = (WrapperComponent)=>{
    return class extends React.Component{
        render(){
            return (
                <Consumer>
                    {
                        (props)=>{
                            return <WrapperComponent {...props}/>
                        }
                    }
                </Consumer>
            )
        }
    }
}
  • main.js
import React from "react";
import ReactDOM from "react-dom"
import App from "./index";
import "./index.css"
import { Provider } from "./connect/createContext"
ReactDOM.render(
    <Provider
        value={{
            username: 'lxc',
            age: 18
        }}
    >
    <App />
    </Provider>,
    document.getElementById("root"),
    () => {
        console.log("渲染成功")
    }
)
  • /component/two.js
import React, { Component } from "react"
import { connect } from "../hoc/connect"
class Two extends Component {
    render() {
        let { username, age } = this.props
        return (
            <div className="Two">
                Two组件
                <h2>username:{username}</h2>
            </div>
        )
    }
}

export default connect(Two)

相关文章

  • react-navigation使用详解

    react-navigation导航组件使用详解 分享点啥 作者React Native开源项目OneM地址(按照...

  • ReactNative中的高阶组件(HOC)和继承详解

    ReactNative中的高阶组件(HOC)和继承详解 共同点: 高阶组件(HOC)是 React 中用于复用组件...

  • React组件详解

    React组件详解 一、类组件 组件的名称必须要大写,为了区分组件和标签。通过ES6的继承实现组件的创建,继承于R...

  • React基础

    React包含react元素和react组件 react元素 react组件 react组件分为函数组件和类组件 ...

  • React 生命周期详解

    React 生命周期详解 生命周期的三个阶段 装载过程: Mouth React组件的第一次渲染DOM的过程, 更...

  • react组件生命周期

    下图详细列述了 React 组件在整个生命周期中所涉及的方法和行为: 生命周期详解 组件在整个 ReactJS 的...

  • 组件

    组件是React的基石,所有的React应用程序都是基于组件的。React组件,可以通过React.createC...

  • ReactNative学习笔记(三)Hello World!

    React Native 看起来很像 React,但React Native的基础组件是原生组件 不是web组件。...

  • react子组件向父组件传值

    相关资料:react 父组件怎么获取子组件的这个值React组件间信息传递方式react同级组件之间传值 • 父...

  • React Native 之组件详解

    引言由于小编忙于当前的项目,暂未更新简书,现在继续和大家一起去React Native门派学习,相信通过前几篇文章...

网友评论

      本文标题:React组件详解

      本文链接:https://www.haomeiwen.com/subject/fbaarhtx.html