中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

React中JSX與react事件的示例分析

小編給大家分享一下React中JSX與react事件的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)專注于路橋企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。路橋網(wǎng)站建設(shè)公司,為路橋等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

1、JSX

1.1、表達(dá)式

在React中使用JSX來描述HTML頁面,而且可以與js混合使用,使用JavaScript表達(dá)式時(shí)要將表達(dá)式包含在大括號(hào)里

const user = {
 firstName: 'Harper',
 lastName: 'Perez'
};
const element = (    //將JSX語句保存在變量中
 <h2>
  Hello, {formatName(user)}!  {/* {}中寫js語句*/}
 </h2>
);

在編譯之后呢,JSX 其實(shí)會(huì)被轉(zhuǎn)化為普通的 JavaScript 對(duì)象,可以對(duì)其賦值或把它當(dāng)作參數(shù)傳遞:

ReactDOM.render(
 element,        //通過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 小駝峰命名 來定義屬性的名稱,而不是使用 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 >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把它們包起來:

const element = (
 <div>
  <h2>Hello!</h2>
  <h3>Good to see you here.</h3>
 </div>
);

1.4、注釋

在jsx中的注釋要單獨(dú)占一行,且用大括號(hào)包起來,例如:{/*注釋*/},否則有可能會(huì)被當(dāng)成普通文本,引起錯(cuò)誤。

2、事件

react事件的綁定采用駝峰寫法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()方法來阻止a標(biāo)簽的默認(rèn)跳轉(zhuǎn)行為。

react事件參數(shù)的傳遞通過綁定來實(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>
 }
}

以上是“React中JSX與react事件的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文名稱:React中JSX與react事件的示例分析
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article36/ippdpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站App開發(fā)、微信公眾號(hào)定制網(wǎng)站、標(biāo)簽優(yōu)化微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
漳平市| 北辰区| 溧阳市| 桑日县| 陆良县| 孝感市| 钟山县| 汶上县| 衢州市| 沈阳市| 策勒县| 谷城县| 浙江省| 新乡县| 沂源县| 卓资县| 福海县| 宁德市| 吉木乃县| 麦盖提县| 济宁市| 滁州市| 大埔县| 丽江市| 翁牛特旗| 阿克陶县| 虎林市| 灵宝市| 兴化市| 禹城市| 汉川市| 石阡县| 通辽市| 海伦市| 阳城县| 来凤县| 锡林郭勒盟| 昌吉市| 霍邱县| 郧西县| 鄄城县|