亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文詳解React組件API

 更新時(shí)間:2023年04月25日 11:42:28   作者:*且聽(tīng)風(fēng)吟  
這篇文章主要介紹了React的組件API,及組件API的用法詳解,文中有詳細(xì)的代碼示例,對(duì)學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的同學(xué)可以閱讀本文

常用 React 組件 API:

  • 設(shè)置狀態(tài):setState
  • 替換狀態(tài):replaceState
  • 設(shè)置屬性:setProps
  • 替換屬性:replaceProps
  • 強(qiáng)制更新:forceUpdate
  • 獲取DOM節(jié)點(diǎn):findDOMNode
  • 判斷組件掛載狀態(tài):isMounted

setState

setState(object nextState[, function callback])

參數(shù)說(shuō)明

nextState:將要設(shè)置的新?tīng)顟B(tài),該狀態(tài)會(huì)和當(dāng)前的 state 合并;
callback:可選參數(shù),回調(diào)函數(shù)。該函數(shù)會(huì)在 setState 設(shè)置成功,且組件重新渲染后調(diào)用。

注意事項(xiàng)

  • 不能在組件內(nèi)部通過(guò) this.state 修改狀態(tài),因?yàn)樵摖顟B(tài)會(huì)在調(diào)用 setState() 后被替換。
  • setState() 并不會(huì)立即改變 this.state,而是創(chuàng)建一個(gè)即將處理的 state。setState()并不一定是同步的,為了提升性能 React 會(huì)批量執(zhí)行 state 和 DOM 渲染。
  • setState() 總是會(huì)觸發(fā)一次組件重繪,除非在 shouldComponentUpdate() 中實(shí)現(xiàn)了一些條件渲染邏輯。

使用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>React demo</title>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>

<div id="example"></div>
<script type="text/babel">
class Counter extends React.Component{
  constructor(props) {
      super(props);
      this.state = {count: 0};
      this.handleClick = this.handleClick.bind(this);
  }
  
  handleClick() {
    this.setState((state) =>{
      return {count: state.count + 1};
    });
  }
  render () {
    return (<h2 onClick={this.handleClick}>點(diǎn)我!點(diǎn)擊次數(shù)為: {this.state.count}</h2>);
  }
}
ReactDOM.render(
  <Counter />,
  document.getElementById('example')
);
</script>

</body>
</html>

頁(yè)面效果:

注意:

上面例子中,有一句 this.handleClick = this.handleClick.bind(this)。

用 class 來(lái)創(chuàng)建 react 組件時(shí),有一件很麻煩的事情,就是this 的指向問(wèn)題。類(lèi)的方法默認(rèn)是不會(huì)綁定 this 的,為了保證 this 的指向正確,需要寫(xiě)這樣的代碼:

this.handleClick = this.handleClick.bind(this)

或者是這樣的代碼:

<button onClick={() => this.handleClick(e)}>

如果忘記綁定 this.handleClick 并把它傳入 onClick,調(diào)用這個(gè)函數(shù)的時(shí)候 this 的值會(huì)是 undefined。

replaceState

replaceState(object nextState[, function callback])

參數(shù)說(shuō)明

nextState:將要設(shè)置的新?tīng)顟B(tài),該狀態(tài)會(huì)替換當(dāng)前的 state。
callback:可選參數(shù),回調(diào)函數(shù)。該函數(shù)會(huì)在 replaceState 設(shè)置成功,且組件重新渲染后調(diào)用。

  • replaceState() 方法與 setState() 類(lèi)似,但是方法只會(huì)保留 nextState 中狀態(tài),原state 不在 nextState 中的狀態(tài)都會(huì)被刪除。

setProps

setProps(object nextProps[, function callback])

參數(shù)說(shuō)明

nextProps:將要設(shè)置的新屬性,該狀態(tài)會(huì)和當(dāng)前的 props 合并
callback:可選參數(shù),回調(diào)函數(shù)。該函數(shù)會(huì)在 setProps 設(shè)置成功,且組件重新渲染后調(diào)用。

設(shè)置組件屬性,并重新渲染組件。

  • props 相當(dāng)于組件的數(shù)據(jù)流,它總是會(huì)從父組件向下傳遞至所有的子組件中。
  • 當(dāng)和一個(gè)外部的 JavaScript 應(yīng)用集成時(shí),可能會(huì)需要向組件傳遞數(shù)據(jù)或通知 React.render() 組件需要重新渲染,可以使用setProps()。
  • 更新組件,可以在節(jié)點(diǎn)上再次調(diào)用React.render(),也可以通過(guò)setProps() 方法改變組件屬性,觸發(fā)組件重新渲染。

replaceProps

replaceProps(object nextProps[, function callback])

參數(shù)說(shuō)明

nextProps:將要設(shè)置的新屬性,該屬性會(huì)替換當(dāng)前的 props。
callback:可選參數(shù),回調(diào)函數(shù)。該函數(shù)會(huì)在 replaceProps 設(shè)置成功,且組件重新渲染后調(diào)用。

  • replaceProps() 方法與 setProps 類(lèi)似,但它會(huì)刪除原有 props。

forceUpdate

forceUpdate([function callback])

參數(shù)說(shuō)明

callback:可選參數(shù),回調(diào)函數(shù)。該函數(shù)會(huì)在組件render()方法調(diào)用后調(diào)用。

  • forceUpdate() 方法會(huì)使組件調(diào)用自身的 render() 方法重新渲染組件,組件的子組件也會(huì)調(diào)用自己的 render()。但是,組件重新渲染時(shí),依然會(huì)讀取 this.props 和this.state,如果狀態(tài)沒(méi)有改變,那么React 只會(huì)更新 DOM。
  • forceUpdate()方法適用于 this.props 和 this.state 之外的組件重繪(如:修改了this.state 后),通過(guò)該方法通知 React 需要調(diào)用 render()。
  • 一般來(lái)說(shuō),應(yīng)該盡量避免使用 forceUpdate(),而僅從 this.props 和 this.state 中讀取狀態(tài)并由 React 觸發(fā) render() 調(diào)用。

findDOMNode

DOMElement findDOMNode()

返回值:DOM 元素 DOMElement

  • 如果組件已經(jīng)掛載到 DOM 中,該方法返回對(duì)應(yīng)的本地瀏覽器 DOM 元素。
  • 當(dāng) render 返回 null 或 false 時(shí),this.findDOMNode() 也會(huì)返回 null。從 DOM 中讀取值的時(shí)候,該方法很有用,如:獲取表單字段的值和做一些 DOM 操作。

isMounted

bool isMounted()

返回值:true 或 false,表示組件是否已掛載到 DOM 中

  • isMounted() 方法用于判斷組件是否已掛載到 DOM 中。可以使用該方法保證setState() 和 forceUpdate() 在異步場(chǎng)景下的調(diào)用不會(huì)出錯(cuò)。

到此這篇關(guān)于一文詳解React組件API的文章就介紹到這了,更多相關(guān)React組件API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React Native中Mobx的使用方法詳解

    React Native中Mobx的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于React Native中Mobx的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • React useEffect的理解與使用

    React useEffect的理解與使用

    useEffect是react v16.8新引入的特性。我們可以把useEffect hook看作是componentDidMount、componentDidUpdate、componentWillUnmounrt三個(gè)函數(shù)的組合
    2022-12-12
  • react-native ListView下拉刷新上拉加載實(shí)現(xiàn)代碼

    react-native ListView下拉刷新上拉加載實(shí)現(xiàn)代碼

    本篇文章主要介紹了react-native ListView下拉刷新上拉加載實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • React前端框架實(shí)現(xiàn)原理的理解

    React前端框架實(shí)現(xiàn)原理的理解

    React是前端開(kāi)發(fā)每天都用的前端框架,自然要深入掌握它的原理。我用?React?也挺久了,這篇文章就來(lái)總結(jié)一下我對(duì)?react?原理的理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-07-07
  • 使用react在修改state中的數(shù)組和對(duì)象數(shù)據(jù)的時(shí)候(setState)

    使用react在修改state中的數(shù)組和對(duì)象數(shù)據(jù)的時(shí)候(setState)

    這篇文章主要介紹了使用react在修改state中的數(shù)組和對(duì)象數(shù)據(jù)的時(shí)候(setState),具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React父子組件互相通信的實(shí)現(xiàn)示例

    React父子組件互相通信的實(shí)現(xiàn)示例

    React中是單向數(shù)據(jù)流,數(shù)據(jù)只能從父組件通過(guò)屬性的方式傳給其子組件,本文主要介紹了React父子組件互相通信的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • React降級(jí)配置及Ant Design配置詳解

    React降級(jí)配置及Ant Design配置詳解

    這篇文章主要介紹了React降級(jí)配置及Ant Design配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • react native 仿微信聊天室實(shí)例代碼

    react native 仿微信聊天室實(shí)例代碼

    這篇文章主要介紹了react native 仿微信聊天室實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用react-native-image-viewer實(shí)現(xiàn)大圖預(yù)覽

    使用react-native-image-viewer實(shí)現(xiàn)大圖預(yù)覽

    這篇文章主要介紹了使用react-native-image-viewer實(shí)現(xiàn)大圖預(yù)覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React事件處理和表單的綁定詳解

    React事件處理和表單的綁定詳解

    這篇文章主要介紹了React事件處理和表單的綁定,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論