React學習之JSX與react事件實例分析
本文實例講述了React學習之JSX與react事件。分享給大家供大家參考,具體如下:
1、JSX
1.1、表達式
在React中使用JSX來描述HTML頁面,而且可以與js混合使用,使用JavaScript表達式時要將表達式包含在大括號里
const user = {
firstName: 'Harper',
lastName: 'Perez'
};
const element = ( //將JSX語句保存在變量中
<h1>
Hello, {formatName(user)}! {/* {}中寫js語句*/}
</h1>
);
在編譯之后呢,JSX 其實會被轉(zhuǎn)化為普通的 JavaScript 對象,可以對其賦值或把它當作參數(shù)傳遞:
ReactDOM.render(
element, //通過JSX變量渲染react節(jié)點
document.getElementById('root')
);
1.2、屬性
JSX中可以像HTML中一樣使用"字符串"的屬性,也可以使用{表達式}屬性:
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需要用一個對象返回,而不是字符串:
const ele=<div style="color:red">Red</div> //會報錯
const ele= <div style={{color:'red'}}>Red</div>
{{color:red}}中第一個大括號代表這是一個js表達式,第二個代表這是一個用大括號引起的對象
1.3、嵌套
如果 JSX 標簽是閉合式的,那么需要在結(jié)尾處用 />:
const element = <img src={user.avatarUrl} />;
jJSX內(nèi)含多個標簽時,返回時需要在最外面用一個div把它們包起來:
const element = ( <div> <h1>Hello!</h1> <h2>Good to see you here.</h2> </div> );
1.4、注釋
在jsx中的注釋要單獨占一行,且用大括號包起來,例如:{/*注釋*/},否則有可能會被當成普通文本,引起錯誤。
2、事件
react事件的綁定采用駝峰寫法onClick={this.function}
例如定義一個切換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、類的方法默認是不會綁定this的,直接在方法shiftFlag中使用this會報錯this is undefined,因此需要為shiftFlag綁定this。
2、e是一個事件參數(shù),使用e.preventDefault()方法來阻止a標簽的默認跳轉(zhuǎn)行為。
react事件參數(shù)的傳遞通過綁定來實現(xiàn),在傳遞時,綁定的this在前,參數(shù)在后。在定義函數(shù)時,事件對象e要放在最后,例如定義一個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程序設(shè)計有所幫助。
上一篇:electron+vue實現(xiàn)div contenteditable截圖功能
欄 目:JavaScript
下一篇:Vue學習之a(chǎn)xios的使用方法實例分析
本文地址:http://m.jygsgssxh.com/a1/JavaScript/9289.html
您可能感興趣的文章


閱讀排行
本欄相關(guān)
- 04-02javascript點線,點線的代碼
- 04-02javascript潛力,javascript強大嗎
- 04-02javascript替換字符串,js字符串的替換
- 04-02javascript移出,js 移入移出
- 04-02包含javascript舍的詞條
- 04-02javascript并行,深入理解并行編程 豆瓣
- 04-02javascript匿名,js匿名方法
- 04-02javascript警報,JavaScript警告
- 04-02javascript遮蓋,JavaScript遮蓋PC端頁面
- 04-02javascript前身,javascript的前身
隨機閱讀
- 01-10C#中split用法實例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法


