react的基本語法

react 官方推薦使用 一種JSX語法,類似xml
react.js 引入的時候放在react-dom.js的前面引入
引入jsx.js的時候,一定要指定 type="babel" 才能識別混寫的jsx.js 文件

<script src="jsx.js" type="text/babel"></script>

基礎(chǔ)語法

我們先在index.html的文件里面寫一個div,
<div class="box"></div>
其他的操作都在jsx.js的文件里面
瀏覽頁面的時候,要切換到服務(wù)器模式

常量用法

const a = <h1>Hello react!!</h1>;
ReactDOM.render(
  <div>{ a }</div>,
document.querySelector(".box")
)

以上,ReactDOM.render(html,target[,callback])將內(nèi)容渲染到指定的節(jié)點
就是把常量 a 渲染到 box這個類名的容器里面,(記得div的后面要加一個逗號.)

變量用法 內(nèi)部解析

let msg = "Hello React!!!";
let ;
定義一個常量b
const b = <a href={ href }>{ msg }</a>
ReactDOM.render( <div>{ b }</div>, document.querySelector(".box") )

頁面就會顯示一個可以跳轉(zhuǎn)到百度的一個 a 標(biāo)簽
記憶點:
1 { } 就代表進入javascript 的執(zhí)行環(huán)境

不用jsx語法,用react 提供的語法怎么寫

const c = React.createElement("a",{href:"http://www.baidu.com"},"復(fù)雜超鏈接")

ReactDOM.render(
  <div>{ c }</div>,
document.querySelector(".box")
)

這是不使用jsx的語法,使用react創(chuàng)建一個元素的語法(寫法)
這是創(chuàng)建了一個a 標(biāo)簽,創(chuàng)建了一個href 屬性,

還有其他react方法,稍微簡單點的

const d = React.DOM.a({href:"http://www.baidu.com"},"復(fù)雜超鏈接2")
ReactDOM.render(
  <div>{ d }</div>,
document.querySelector(".box")
)

嵌套的寫法

const e = <div>
  <h1>嵌套</h1>
  <span>span嵌套</span>
  <input type="text" />
 </div>
ReactDOM.render(
  <div>{ e }</div>,
document.querySelector(".box")
)

用createElement怎么寫

把子作為第三個參數(shù)創(chuàng)建進來 比e的方法要難一些,

const f = React.createElement("div",null,
    React.createElement("h1",null,"嵌套2")
);
ReactDOM.render(
  <div>{ f }</div>,
document.querySelector(".box")
)

使用react.js不一定要使用jsx語法
可以使用javascript 原生語法,使用與不使用在嵌套的時候,就表現(xiàn)得很明顯了,不使用jsx ,代碼很多,一直在createElement,但是使用了的話,就直接使用標(biāo)簽就可以了

image.png

jsx真正的語法

image.png

1 必須要有結(jié)束的斜杠結(jié)束符 <input type="text" />
2 注意, style 要用兩個花括號,外面的花括號說明進入javascript 環(huán)境,里面的花括號說明 對象,不等同于vue的表達式

樣式的設(shè)置,表達式語法

const g = <span style={{color:"red",fontSize:"30px"}}>style寫法</span>
ReactDOM.render(
  <div>{ g }</div>,
document.querySelector(".box")
)

換一種寫法,style 就可以用一個花括號寫

const so = {
    color:"blue",
    fontSize:"20px",
    border:"1px solid pink",
    background :"#ccc"
}
const h = <span style={ so }>style 寫法2</span>
ReactDOM.render(
  <div>{ h }</div>,
document.querySelector(".box")
)

這樣寫,樣式加的比較多,但是也是分開三部分的,so 是樣式部分,const h 是標(biāo)簽部分,ReactDOM.render()是渲染頁面部分

關(guān)鍵字沖突

我們在index.html里面寫一點樣式

<style>
.cn{
        color:red;
        font-size: 40px;
    }
</style>
//在jsx.js里面寫
const i = <span className="cn">class 寫法</span>

1 直接象在寫頁面樣式的時候class="cn"
是不可以的,要寫成className
2 對于一些關(guān)鍵字要進行轉(zhuǎn)換, class 要寫成 className, label 標(biāo)簽的for屬性 要寫成 htmlFor

const ii = <div>
    <label htmlFor="male">nan</label>
    <input type="radio" id="male" name="sex"/>
    <label htmlFor="ff">nv</label>
    <input type="radio" id="ff" name="sex"/>
</div>
ReactDOM.render(
  <div>{ ii }</div>,
document.querySelector(".box")
)

image.png

如果用for 就會報上面的錯誤
改成htmlFor 就不會報錯了
label 標(biāo)簽是應(yīng)用于 選擇的

跟標(biāo)簽及煩人的注釋寫法

ReactDOM.render(
  <div>
{/*這是一段注釋 jsx 的注釋必須用{}包裹,只能有一個根節(jié)點*/}
      { ii }
      { a }
        { b }
        { c }
        { d }
        { e }
        { f }
        { g }
        { h }
        { ii }
        { i }
        { j }
        { k }
        { l }
  </div>,
document.querySelector(".box")
)

數(shù)組的使用

const j = [
    
        <h1 key="1">數(shù)組一</h1>,
        <h1 key="2">數(shù)組二</h1>,
        <h1 key="3">數(shù)組三</h1>
    
]
ReactDOM.render(
<div>
{ j }
</div>
)
document.querySelector(".box")

一個數(shù)組里面有三個元素,沒有key屬性的時候,會報錯

image.png
const k = <div>
<hr/>
    <h1>Hello</h1>
    { j }
</div>;
ReactDOM.render(
<div>
{ k }
</div>
)
document.querySelector(".box")

j 是一個數(shù)組,用{ } 放在那里都可以
如果數(shù)組里面直接是一堆標(biāo)簽,那么就會直接渲染到另一個父標(biāo)簽里面,可以渲染到跟div 里面,也可以渲染到 k 的父元素div 里面

數(shù)組
const l =["數(shù)組四","數(shù)組5","數(shù)組6"];

ReactDOM.render(
<div>
{ l }
</div>
)
document.querySelector(".box")

如果沒有標(biāo)簽包裹,就會直接渲染到頁面中,沒有標(biāo)簽包裹
我們可以這樣寫

使用map函數(shù)遍歷數(shù)組

ReactDOM.render(
<div>
{
    l.map((m,index)=>{
    return <h1 key={ index }>{ m }</h1>
  })
}
</div>
)
document.querySelector(".box")
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,940評論 1 18
  • 原文地址:Learning React.js is easier than you think原文作者:Samer...
    sunshine小小倩閱讀 4,340評論 3 41
  • 最近看了一本關(guān)于學(xué)習(xí)方法論的書,強調(diào)了記筆記和堅持的重要性。這幾天也剛好在學(xué)習(xí)React,所以我打算每天堅持一篇R...
    gaoer1938閱讀 1,811評論 0 5
  • 自己最近的項目是基于react的,于是讀了一遍react的文檔,做了一些記錄(除了REFERENCE部分還沒開始讀...
    潘逸飛閱讀 3,737評論 1 10
  • 安裝: 概述 React起源于FaceBook的內(nèi)部項目,因為該公司對市場上所有的JavaScript MVC框架...
    姒沝無痕閱讀 800評論 0 0

友情鏈接更多精彩內(nèi)容