React學(xué)習(xí)之JSX與react事件實(shí)例分析
本文實(shí)例講述了React學(xué)習(xí)之JSX與react事件。分享給大家供大家參考,具體如下:
1、JSX
1.1、表達(dá)式
在React中使用JSX來(lái)描述HTML頁(yè)面,而且可以與js混合使用,使用JavaScript表達(dá)式時(shí)要將表達(dá)式包含在大括號(hào)里
const user = { firstName: 'Harper', lastName: 'Perez' }; const element = ( //將JSX語(yǔ)句保存在變量中 <h1> Hello, {formatName(user)}! {/* {}中寫(xiě)js語(yǔ)句*/} </h1> );
在編譯之后呢,JSX 其實(shí)會(huì)被轉(zhuǎn)化為普通的 JavaScript 對(duì)象,可以對(duì)其賦值或把它當(dāng)作參數(shù)傳遞:
ReactDOM.render( element, //通過(guò)JSX變量渲染react節(jié)點(diǎn) document.getElementById('root') );
1.2、屬性
JSX中可以像HTML中一樣使用"字符串"的屬性,也可以使用{表達(dá)式}屬性:
const element = <div tabIndex="0"></div>; const element = <img src={user.avatarUrl}></img>;
注意:
1、React DOM 使用 camelCase 小駝峰命名 來(lái)定義屬性的名稱,而不是使用 HTML 的屬性名稱。例如font-size要改為fontSize。
2、HTML中的保留字不能用于js中,例如class,應(yīng)改為className:
const ele= <div className="red">Red Color</div>
3、JSX中行內(nèi)樣式style需要用一個(gè)對(duì)象返回,而不是字符串:
const ele=<div style="color:red">Red</div> //會(huì)報(bào)錯(cuò) const ele= <div style={{color:'red'}}>Red</div>
{{color:red}}中第一個(gè)大括號(hào)代表這是一個(gè)js表達(dá)式,第二個(gè)代表這是一個(gè)用大括號(hào)引起的對(duì)象
1.3、嵌套
如果 JSX 標(biāo)簽是閉合式的,那么需要在結(jié)尾處用 />:
const element = <img src={user.avatarUrl} />;
jJSX內(nèi)含多個(gè)標(biāo)簽時(shí),返回時(shí)需要在最外面用一個(gè)div把它們包起來(lái):
const element = ( <div> <h1>Hello!</h1> <h2>Good to see you here.</h2> </div> );
1.4、注釋
在jsx中的注釋要單獨(dú)占一行,且用大括號(hào)包起來(lái),例如:{/*注釋*/},否則有可能會(huì)被當(dāng)成普通文本,引起錯(cuò)誤。
2、事件
react事件的綁定采用駝峰寫(xiě)法onClick={this.function}
例如定義一個(gè)切換ON/OFF的函數(shù)shiftFlag:
class Toggole extends React.Component{ constructor(props){ super(props); this.state={ flag:true }; this.shiftFlag=this.shiftFlag.bind(this); //函數(shù)shiftFlag綁定this } shiftFlag(e){ e.preventDefault(); this.setState({ flag:!this.state.flag }); } render(){ return <a href="#" rel="external nofollow" onClick={this.shiftFlag}>{this.state.flag?'ON':'OFF'}</a> } }
注:
1、類的方法默認(rèn)是不會(huì)綁定this的,直接在方法shiftFlag中使用this會(huì)報(bào)錯(cuò)this is undefined,因此需要為shiftFlag綁定this。
2、e是一個(gè)事件參數(shù),使用e.preventDefault()方法來(lái)阻止a標(biāo)簽的默認(rèn)跳轉(zhuǎn)行為。
react事件參數(shù)的傳遞通過(guò)綁定來(lái)實(shí)現(xiàn),在傳遞時(shí),綁定的this在前,參數(shù)在后。在定義函數(shù)時(shí),事件對(duì)象e要放在最后,例如定義一個(gè)setName函數(shù)修改name為傳入的參數(shù):
class Name extends React.Component{ constructor(props){ super(props); this.state={ name:'default' } } setName(name,e){ //事件e放在最后 this.setState({ name:name }) } render(){ return <button onClick={this.setName.bind(this,'tory')}>{this.state.name}</button> } }
希望本文所述對(duì)大家React程序設(shè)計(jì)有所幫助。
上一篇:electron+vue實(shí)現(xiàn)div contenteditable截圖功能
欄 目:JavaScript
下一篇:Vue學(xué)習(xí)之a(chǎn)xios的使用方法實(shí)例分析
本文標(biāo)題:React學(xué)習(xí)之JSX與react事件實(shí)例分析
本文地址:http://mengdiqiu.com.cn/a1/JavaScript/9289.html
您可能感興趣的文章
- 01-10React 實(shí)現(xiàn)車牌鍵盤(pán)的示例代碼
- 01-10React中使用UMEditor的方法示例
- 01-10vue學(xué)習(xí)之Vue-Router用法實(shí)例分析
- 01-10Vue學(xué)習(xí)之常用指令實(shí)例詳解
- 01-10Vue學(xué)習(xí)之組件用法實(shí)例詳解
- 01-10Vue學(xué)習(xí)之a(chǎn)xios的使用方法實(shí)例分析
- 01-10React學(xué)習(xí)之受控組件與數(shù)據(jù)共享實(shí)例分析
- 01-10React Native中ScrollView組件輪播圖與ListView渲染列表組件用法實(shí)例分


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02javascript點(diǎn)線,點(diǎn)線的代碼
- 04-02javascript潛力,javascript強(qiáng)大嗎
- 04-02javascript替換字符串,js字符串的替換
- 04-02javascript移出,js 移入移出
- 04-02包含javascript舍的詞條
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript匿名,js匿名方法
- 04-02javascript警報(bào),JavaScript警告
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁(yè)面
- 04-02javascript前身,javascript的前身
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法