国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

初識React(3):組件

FullStackDeveloper / 3437人閱讀

摘要:創(chuàng)建組件創(chuàng)建組件之前要注意以下幾點組件創(chuàng)建的名稱首字母得大寫組件中返回的只能是一個根節(jié)點,所有的內(nèi)容得用一個元素都框起來無狀態(tài)函數(shù)式組件無狀態(tài)函數(shù)式組件可以理解成就是一個函數(shù)生成的,使得代碼的可讀性更好,并且精簡便利,減少了冗余,無狀態(tài)組件

創(chuàng)建組件

創(chuàng)建組件之前要注意以下幾點:

組件創(chuàng)建的名稱首字母得大寫

組件中返回的JSX只能是一個根節(jié)點,所有的內(nèi)容得用一個元素都框起來

1.無狀態(tài)函數(shù)式組件

無狀態(tài)函數(shù)式組件可以理解成就是一個函數(shù)生成的,使得代碼的可讀性更好,并且精簡、便利,減少了冗余,無狀態(tài)組件有以下特點:

組件無法被實例化,整體渲染提高

組件不能訪問this對象,因為沒有實例化,所以無法訪問到this對象

組件沒有生命周期

無狀態(tài)組件只能訪問輸入的props,沒有state狀態(tài)

import React from "react"
import { connect } from "dva";

 function CreateComponent(props) {
   console.log(props);
   return (
     
{props.name}今年{props.age}歲
) } export default connect(state => ({ name:"小明", age:15 }))(CreateComponent);
2.React.Component類組件

每個組件類必須要實現(xiàn)一個render方法,這里要特別注意,這個render方法必須要返回一個JSX元素即要用一個最外層的元素將所有內(nèi)容都包裹起來,如果返回并列多個JSX元素是不合法,如下所示:

import React from "react"

class CreateComponent extends React.Component {
     render() {
       return(
         

標(biāo)題

  • 首先
  • 其次
  • 最后
) } } export default CreateComponent;

以上實例,就是把h2元素和ul用一個div都給包起來

1.組件的事件監(jiān)聽
import React from "react"

class CreateComponent extends React.Component {

   clickFunc = (e) => {
     console.log("監(jiān)聽:",e.target.innerHTML);
   }

   clickValue = (value) => {
     console.log(value);
   }
    render() {
      return (
       
      )
    }

}

export default CreateComponent;

以上就是事件監(jiān)聽和傳參實例

2.組件的state和setState

通常在組件中,state是用來放這個組件內(nèi)部參數(shù)的狀態(tài)的,而setState是用來改變state里面的參數(shù),例如:

import React from "react"

class CreateComponent extends React.Component {
  state = {
    flag : true
  }
   clickValue = () => {
     this.setState({
       flag: !this.state.flag
     })
   }
    render() {
      return (
       
flag的值為:{this.state.flag ? "真" : "假"}
) } } export default CreateComponent;
3.組件的props

props是組件里面的屬性,在組件內(nèi)部是不能更改自己本身的props的,比如,建立一個組件,然后在另外一個組件里面調(diào)用這個組件,如下:

import React from "react";

function NewComponent(props) {
  return (
    
{props.content}
); } export default NewComponent;

建立一個組件NewComponent,然后調(diào)用,如下:

import React from "react"
import NewComponent from "./newComponent.js"

class CreateComponent extends React.Component {
    render() {
      return (
       
) } } export default CreateComponent;

從這里可以看出,props就是組件帶入的屬性值,props其實就是讓外部組件對自己進(jìn)行配置,而state是組件控制自己的狀態(tài)

4.組件的生命周期
constructor組件初始化:

constructor初始化一些參數(shù)屬性等等

componentWillMount組件渲染之前:

componentWillMount這個函數(shù)在react16.3.0之后慢慢的被棄用了,使用componentDidMount替換

componentDidMount組件渲染之后:

componentDidMount在組件渲染之后實行,可以加載數(shù)據(jù)

render組件渲染:

render組件渲染顯示頁面

import React from "react"

class CreateComponent extends React.Component {
  constructor () {
    super()
    console.log("construct:頁面初始化")
  }

  componentWillMount () {
    console.log("componentWillMount:頁面將要渲染")
  }

  componentDidMount () {
    console.log("componentDidMount:頁面渲染結(jié)束")
  }


    render() {
      console.log("render:頁面渲染");
      return (
       
頁面渲染
) } } export default CreateComponent;

輸出結(jié)果:

construct:頁面初始化
componentWillMount:頁面將要渲染
render:頁面渲染
componentDidMount:頁面渲染結(jié)束
componentWillUnmount組件刪除

componentWillUnmount函數(shù)是在組件要刪除之前執(zhí)行的函數(shù),如下代碼:

import React from "react";

class NewComponent extends React.Component {
  componentWillUnmount() {
    console.log("componentWillUnmount:將要從頁面中刪除");
  }

  render() {
    return (
      
{this.props.content}
); } } export default NewComponent;

建立一個組件NewComponent,然后在CreateComponent組件中引入這個組件,如下:

import React from "react"
import NewComponent from "./newComponent.js";

class CreateComponent extends React.Component {
  constructor () {
    super()
    console.log("construct:頁面初始化");
    this.state = {
      content:"測試組件",
      isDelete:false
    }
  }

  componentWillMount () {
    console.log("componentWillMount:頁面將要渲染")
  }

  componentDidMount () {
    console.log("componentDidMount:頁面渲染結(jié)束")
  }

  deleteFunc = () => {
    this.setState({
      isDelete:true
    })
  }


    render() {
      console.log("render:頁面渲染");
      return (
       
頁面渲染 {!this.state.isDelete?( ):(null)}
) } } export default CreateComponent;

當(dāng)點擊刪除按鈕的時候,組件NewComponent會被刪除,在刪除之前會執(zhí)行componentWillUnmount函數(shù)

輸出結(jié)果:

construct:頁面初始化
componentWillMount:頁面將要渲染
render:頁面渲染
componentDidMount:頁面渲染結(jié)束
componentWillUnmount:將要從頁面中刪除

以上幾個生命周期是我們會常用到的組件生命周期,組件的生命周期還有更新階段的生命周期,不過這些比較少用,這里簡單介紹一下:

shouldComponentUpdate(nextProps, nextState)

通過這個方法控制組件是否重新渲染,如果返回false不會重新渲染,如下

import React from "react"
import NewComponent from "./newComponent.js";

class CreateComponent extends React.Component {
  constructor () {
    super()
    console.log("construct:頁面初始化");
    this.state = {
      content:"測試組件",
      isDelete:false
    }
  }

  componentWillMount () {
    console.log("componentWillMount:頁面將要渲染")
  }

  componentDidMount () {
    console.log("componentDidMount:頁面渲染結(jié)束")
  }

  shouldComponentUpdate(nextProps, nextState){
    if(nextState.isDelete){
      return false;
    }

  }

  deleteFunc = () => {
    this.setState({
      isDelete:true
    })
  }


    render() {
      console.log("render:頁面渲染");
      return (
       
頁面渲染 {!this.state.isDelete?( ):(null)}
) } } export default CreateComponent;

此時點擊刪除按鈕,頁面沒有進(jìn)行渲染,那是因為在shouldComponentUpdate中設(shè)置了返回值為false,當(dāng)返回值為false的時候,頁面無法重新渲染。這個函數(shù)第一個參數(shù)表示最新的props,第二個參數(shù)表示最新的state

componentWillReceiveProps(nextProps)

組件從父組件接收到新的 props 之前調(diào)用,函數(shù)的參數(shù)nextProps表示接收到的數(shù)據(jù)

在NewComponent組件中:

import React from "react";

class NewComponent extends React.Component {
  componentWillUnmount() {
    console.log("componentWillUnmount:將要從頁面中刪除");
  }

  componentWillReceiveProps(nextProps){
    console.log(nextProps);
  }

  render() {
    return (
      
{this.props.content}
); } } export default NewComponent;

在組件CreateComponent中:

import React from "react"
import NewComponent from "./newComponent.js";

class CreateComponent extends React.Component {
  constructor () {
    super()
    console.log("construct:頁面初始化");
    this.state = {
      content:"測試組件",
      isDelete:false
    }
  }

  componentWillMount () {
    console.log("componentWillMount:頁面將要渲染")
  }

  componentDidMount () {
    console.log("componentDidMount:頁面渲染結(jié)束")
  }

  changeFunc = () => {
    this.setState({
      content:"文字修改"
    })
  }


    render() {
      console.log("render:頁面渲染");
      return (
       
頁面渲染 {!this.state.isDelete?( ):(null)}
) } } export default CreateComponent;

不過componentWillReceiveProps將在react16.3.0開始之后棄用

componentWillUpdate:

組件重新渲染之前調(diào)用這個方法,將在react16.3.0開始之后棄用

componentDidUpdate:

組件重新渲染并且把更改變更到真實的 DOM 以后調(diào)用

注意: componentWillUpdate、componentWillReceiveProps、componentWillMount這三個生命周期將在react116.3.0之后開始棄用,具體詳情可查看官網(wǎng):https://reactjs.org/docs/reac...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/108474.html

相關(guān)文章

  • React系列---React(一)初識React

    摘要:系列一初識系列二組件的和系列三組件的生命周期是推出的一個庫,它的口號就是用來創(chuàng)建用戶界面的庫,所以它只是和用戶界面打交道,可以把它看成中的視圖層。系列一初識系列二組件的和系列三組件的生命周期 React系列---React(一)初識ReactReact系列---React(二)組件的prop和stateReact系列---React(三)組件的生命周期 showImg(https://...

    lanffy 評論0 收藏0
  • react開發(fā)教程(-)初識

    摘要:定義一個組件可以在其他組件中調(diào)用這個組件調(diào)用組件劉宇組件插入內(nèi)容在上面的案例中可以看到吧寫到當(dāng)中,這種寫法稱為。 React初識 React是Facebook推出的一個javascript庫(用來創(chuàng)建用戶界面的Javascript庫),所以他只是和用戶的界面打交道,你可以把它看成MVC中的V(視圖)這一層。 組件 React的一切都是基于組件的。web世界的構(gòu)成是基于各種HTML標(biāo)簽的...

    Allen 評論0 收藏0
  • 初識React(8):父子組件傳參

    摘要:父級向子級傳參父子組件通信主要用到,如下在父組件中父組件我是父級過來的內(nèi)容在子組件中子組件通過上面例子可以看出,在父組件中,我們引入子組件,通過給子組件添加屬性,來起到傳參的作用,子組件可以通過獲取父組件傳過來的參數(shù)子級向父級傳參在父組件中 父級向子級傳參 父子組件通信主要用到props,如下: 在父組件中: import React from react import ChildCo...

    paulli3 評論0 收藏0
  • 初識React

    摘要:初識依稀記得那年參加線下活動,第一次聽說這個詞語,當(dāng)時的主講人是郭達(dá)峰,他播放了一個關(guān)于及的性能對比視頻。合成事件會以事件委托的方式綁定到組件最上層,并且在組件卸載的時候自動銷毀綁定的事件。 初識React 依稀記得2015那年參加線下活動,第一次聽說React這個詞語,當(dāng)時的主講人是郭達(dá)峰,他播放了一個關(guān)于ember、angular及react的性能對比視頻: React.js Co...

    kuangcaibao 評論0 收藏0

發(fā)表評論

0條評論

FullStackDeveloper

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<