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

React詳細(xì)講解JSX和組件的使用

 更新時(shí)間:2022年08月31日 16:06:07   作者:小綿楊Yancy  
jsx就是javsscript與xml結(jié)合的一種格式,是js語法的一種擴(kuò)展,只要把html代碼寫在js中就是jsx。react中定義組件有3種寫法:函數(shù)的方式、es5的寫法、es6(類)的寫法

一、React JSX

1.1 JSX簡介

JSX是全稱是(JavaScript XML)按照React 官方的解釋,JSX 是一個(gè) JavaScript 的語法擴(kuò)展,類似于模板語法,或者說是一個(gè)類似于 XML 的 ECMAScript 語法擴(kuò)展,并且具備 JavaScript 的全部功能。

例如:

const element = <h1>Hello, world!</h1>;

或者:

function App(){
	return (
		<p>Hello React!</p>
	)
}

可以看到,定義的element和函數(shù)的返回值既不是字符串,也不是變量,而是html元素。

JSX 會(huì)被編譯為 React.createElement(), React.createElement() 將返回一個(gè)叫作“React Element”的 JS 對象。

JSX與React.createElement()相比,在實(shí)際功能效果一致的前提下,JSX 代碼層次分明、嵌套關(guān)系清晰;而 React.createElement 代碼則給人一種非?;靵y的“雜糅感”,這樣的代碼不僅讀起來不友好,寫起來也費(fèi)勁。

JSX 語法糖允許我們開發(fā)人員像寫 HTML 一樣來寫我們的 JS 代碼,也就是在js中寫html代碼,在降低學(xué)習(xí)成本的同時(shí)還提升了我們的研發(fā)效率和研發(fā)體驗(yàn)。

1.2 JSX表達(dá)式

React JSX使用的就是JavaScript語法,那么自然也 可以使用JavaScript表達(dá)式。但是,在React JSX中使用JavaScript表達(dá)式要使用大括號(hào)"{ }"括起來。

例如:

ReactDOM.render(
    <p>Hello React! {alert('Hello!')}</p>,
    document.getElementById('app')
);

React JSX是支持嵌入表達(dá)式的,什么意思呢?簡單的來講,我們可以在JSX中引用JSX外定義的變量。

例如:

const name = "yancy";
ReactDOM.render(
	<p>Hello React! {alert(`Hello ${name}!`)}</p>,
	document.getElementById('app')
);

1.3 JSX條件表達(dá)式

React JSX中的JavaScript表達(dá)式時(shí)無法使用if條件語句的,React也沒有提供類似vue的v-if的指令來實(shí)現(xiàn)條件判斷邏輯。

我們可以使用三元表達(dá)式來實(shí)現(xiàn)條件表達(dá)式。

ReactDOM.render(
	<p>1 === 1 ? { 1 === 1 ? "true" : "false"}</p>,
	document.getElementById('app')
);

我們還可以通過在jsx中調(diào)用函數(shù)表達(dá)式來實(shí)現(xiàn)邏輯判斷的目的,調(diào)用的函數(shù)可以返回一個(gè)jsx,因?yàn)椋琷sx可以作為參數(shù)傳遞并且嵌套在另一個(gè)jsx中。

1.4 JSX循環(huán)表達(dá)式

在jsx中不能直接使用for表達(dá)式,可以使用map方法來實(shí)現(xiàn)數(shù)組的遍歷。

const hobby = ["sing","jump","rap","basketball"];
ReactDOM.render(
	(<ul>
	    {hobby.map(i => <li>{ i }</li>)}
	</ul>),
	document.getElementById('app')
);

1.5 JSX樣式表達(dá)式

react語法不支持內(nèi)聯(lián)形式的CSS樣式,因此可以使用JSX樣式表達(dá)式來實(shí)現(xiàn)頁面樣式。

ReactDOM.render(
    <p style={{fontSize: 1.2+'rem',color: "red"}}>Hello React!</p>,
    document.getElementById('app')
);

可以看到style屬性綁定的其實(shí)是一個(gè)js對象,請和css的樣式表區(qū)分,如果我們將這個(gè)對象直接提取出來,那么就比較明了了。

const p_style = { fontSize: 1.2 + "rem", color: "red" };
ReactDOM.render(
  <p style={p_style}>Hello React!</p>,
  document.getElementById("app")
);

效果是一樣的。

1.6 JSX注釋表達(dá)式

注釋內(nèi)容需要寫在大括號(hào)“{}”中,負(fù)責(zé)注釋的內(nèi)容會(huì)直接在頁面上展示出來。

二、React組件

組件化開發(fā)是react的重要思想之一,組件就是UI切分成一些獨(dú)立的、可復(fù)用的部件,例如頭部、底部、一個(gè)彈窗組件等。React組件通過props可以接收任意的輸入值,因此props也可以理解外參數(shù)的概念。

React組件有兩種形式:類組件和函數(shù)組件。

2.1 類組件

class HelloComponent extends React.Component {
  render() {
    return <p>Hello React!</p>;
  }
}
ReactDOM.render(<HelloComponent />, document.getElementById("app"));

React v16.8 之前的版本只支持類組件,所以很多以前項(xiàng)目是使用類組件寫的,但是現(xiàn)在新項(xiàng)目幾乎都是使用函數(shù)組件了,所以這里簡單地提一下類組件。

2.2 函數(shù)組件

function Hello() {
  return <p>Hello React!</p>;
}
ReactDOM.render(
  <div>
    <Hello />
  </div>,
  document.getElementById("app")
);

注意組件名第一個(gè)字母必須大寫!

2.3 React Props

組件需要被復(fù)用,那么可以通過接收不同的參數(shù)來實(shí)現(xiàn)復(fù)用。

例如:

function MyDialog(props) {
  return (
    <dialog open>
      <p>Hello {props.name}</p>
    </dialog>
  );
}
ReactDOM.render(
  <div>
    <MyDialog name="yancy" />
  </div>,
  document.getElementById("app")
);

可以看到,props其實(shí)就是包含了組件標(biāo)簽的屬性。

雖然React Props很好用,但是React規(guī)定Props是不能被修改的,也就是說Props是只讀的參數(shù),我們不能在組件中試圖修改prop的內(nèi)容。

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

相關(guān)文章

  • 在react中使用mockjs的方法你知道嗎

    在react中使用mockjs的方法你知道嗎

    這篇文章主要為大家詳細(xì)介紹了在react中使用mockjs的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 淺談React Native 中組件的生命周期

    淺談React Native 中組件的生命周期

    本篇文章主要介紹了淺談React Native 中組件的生命周期,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-09-09
  • 基于PixiJS實(shí)現(xiàn)react圖標(biāo)旋轉(zhuǎn)動(dòng)效

    基于PixiJS實(shí)現(xiàn)react圖標(biāo)旋轉(zhuǎn)動(dòng)效

    PixiJS是一個(gè)開源的基于web的渲染系統(tǒng),為游戲、數(shù)據(jù)可視化和其他圖形密集型項(xiàng)目提供了極快的性能,這篇文章主要介紹了用PixiJS實(shí)現(xiàn)react圖標(biāo)旋轉(zhuǎn)動(dòng)效,需要的朋友可以參考下
    2022-05-05
  • Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼

    Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼

    這篇文章主要介紹了Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-01-01
  • react配置px轉(zhuǎn)換rem的方法

    react配置px轉(zhuǎn)換rem的方法

    這篇文章主要介紹了react配置px轉(zhuǎn)換rem的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • React中Portals與錯(cuò)誤邊界處理實(shí)現(xiàn)

    React中Portals與錯(cuò)誤邊界處理實(shí)現(xiàn)

    本文主要介紹了React中Portals與錯(cuò)誤邊界處理實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • React優(yōu)化子組件render的使用

    React優(yōu)化子組件render的使用

    這篇文章主要介紹了React優(yōu)化子組件render的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • react的ui庫antd中form表單使用SelectTree反顯問題及解決

    react的ui庫antd中form表單使用SelectTree反顯問題及解決

    這篇文章主要介紹了react的ui庫antd中form表單使用SelectTree反顯問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • React手稿之 React-Saga的詳解

    React手稿之 React-Saga的詳解

    這篇文章主要介紹了React手稿之 React-Saga的詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 解決React報(bào)錯(cuò)Unexpected default export of anonymous function

    解決React報(bào)錯(cuò)Unexpected default export of an

    這篇文章主要為大家介紹了React報(bào)錯(cuò)Unexpected default export of anonymous function解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論