美文网首页
ReactJS-类组件

ReactJS-类组件

作者: abrila | 来源:发表于2018-11-27 14:30 被阅读0次

类组件继承自React的Component类,具有一个组件的完整生命周期

以下生命周期适用于React0.14.9版本,以上版本生命周期发生较大变化
componentDidMount:组件初次挂载到页面时执行,只会在组件挂载时执行一次
挂载的含义以后再进行解释,现在我也理解的不是很清除,也希望大神们可以给我留言教教我

组件的数据来源

组件的数据来源有两种PropsState

Props来源于实例化组件时传递给组件的参数

<SimpleComponent
    title = "Simple Component"
    defaultText = "Type here"
/>

State
State以对象的形式保存在组件上,通常是调用方法setState方法去改变组件的state。
setState(updater,[,callback])方法接受两个参数,返回的是一个要更新this.state的对象,或者返回改对象的函数,callback是更新完成后的执行的回调函数。
setState是一个批量异步的操作,react会在短时间内批量更新,callback函数调用时才会访问到更新后的state

组件方法

setState():更新组件的State,有机会触发render()执行
forceUpdate():强制执行一次render()

数据传递

先上一段代码

import  * as React from 'react'
import * as ReactDOM from 'react-dom'
class SimpleComponent extends React.Component {
    state = {}
    componentDidMount() {
        this.setState({text: this.props.defaultText})
    }
    render() {
        return (
            <div>
                <h1>{
                    this.props.title
                }
                </h1>
                <div>
                    <input
                        type="text"
                        value={this.state.text}
                        onChange={(event) =>this.updateText(event.target.value)}
                    />
                </div>
                <div>
                    {this.state.text }
                </div>
            </div>)
    }
    updateText(text)
    {
        this.setState({text: text})
    }
}
class App extends React.Component {
    state = {
        title: 'initial title'
    }
    componentDidMount() {
        setTimeout(() => {
            this.setState({title: "title changed"})
        }, 1000)
    }
    render(){
        return(<SimpleComponent
            title={this.state.title}
            defaultText="Type here"
        />)
    }
}
ReactDOM.render(
    <div>
        {/*<SimpleComponent*/}
            {/*title = "iiii"*/}
            {/*defaultText = 'iuiuiihi'*/}
        {/*/>*/}
        <App />
    </div>,
    document.querySelector("#root")
)

运行的最终结果如图:

image.png
App挂载时,界面显示initial title,随后会触发一个定时器,1s之后显示title changed。写代码时要注意,render()函数一定要有return语句,不然运行后界面无内容

子组件与子元素

子组件是指在一个组件的render()函数中使用到的另一个组件,比如App中使用了SimpleComponent,则SimpleComponentApp的子组件。
子元素JSX中组件的嵌套关系,inputdiv的子元素

 <div>
                    <input
                        type="text"
                        value={this.state.text}
                        onChange={(event) =>this.updateText(event.target.value)}
                    />
</div>

无状态组件

通常为纯函数形式,返回JSX片段。无状态组件没有state,接受props作为函数参数,通常进行一些数据展示的功能

相关文章

  • ReactJS-类组件

    类组件继承自React的Component类,具有一个组件的完整生命周期 以下生命周期适用于React0.14.9...

  • React函数组件与类组件

    函数组件与类组件 GitHub地址 函数组件与类组件函数组件(functional component)类组件(c...

  • React - 类组件创建

    React创建组件有两种方式 函数式组件 类组件函数式组件已经学过,现在看下类组件怎么写。 函数式组件和类组件区别...

  • 五(2)、React之类组件 ------ 2019-11-01

    1、类组件 2、类组件的状态管理:

  • Angular4.x说明2018-07-17

    概述:Angular 应用是由组件组成的。组件由 HTML 模板和组件类组成,组件类控制视图,每个组件都以@Com...

  • React Hook使用

    一、组件类 React的核心是组件, 在v16.8之前,组件的标准写法是类(class)。 以下为一个简单的组件类...

  • @芥末的糖-----组件的定义

    1.无状态组件,函数式组件, 影子组件,傻瓜组件,UI组件 2.类的定义 总结:类的组件形式相对于函数化组件更消耗性能

  • 2-useState

    Time: 20200126 函数组件中使用状态。 类组件写法 注意类组件的用法。 函数式组件写法 在事件调用中,...

  • 类组件

    1.生命周期函数componentWillMount (1)组件即将被加载时候调用 (2)只会被调用一次 (3)在...

  • Vue组件通信

    Vue组件通信 Vue组件关系可分为三大类: 父子组件 兄弟组件 跨级组件, 相应的组件之间的通信也分类三大类: ...

网友评论

      本文标题:ReactJS-类组件

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