ReactDOM.render(
<h1>Hello,world!</h1>,
document,getElementById('example')
);
ReactDOM.render(
<div>
<h1>Hello</h1>
<p>一起學(xué)習(xí)吧</p>
</div>,
document.getElementById('example')
);
var Hello=React.createClass({
render:function(){
return (
<div className="item">Hello</div>
);
}
});
var World=React.createClass({
render:function(){
return (
<div>world</div>
);
}
});
ReactDOM.render(
<div>
<Hello/><World/>
</div>,
document.getElementById('example')
);
//結(jié)果:helloworld
var text='Hello world';
ReactDOM.render(
<div>{text}</div>,
document.getElementById('example')
);
//結(jié)果:Hello world
function dateToString(d){
return [
d.getFullYear(),
d.getMonth()+1,
d.getDate()
].join('-');
};
ReactDOM.render(
<div>{dateToString(new Date())}</div>,
document.getElementById('example')
);
//結(jié)果:2016-9-4
var text=['hello','world'];
ReactDOM.render(
<div>{text}</div>,
document.getElementById('example')
);
//結(jié)果:helloworld
var Divider=React.createClass({
render:function(){
return (
<div className="divider">
<h2>{this.props.children}</h2>
</div>
)
}
});
ReactDOM.render(
<Divider>Props</Divider>,
document.getElementById('example')
)
//渲染結(jié)果:
<div class="divider">
<h2>Props</h2>
</div>
<div id="id" class="className"></div>
var id='id';
var className='className';
<div id={id} className={className}></div>
<div className={this.getClassName()}></div>
render:function(){
return (
<div className={this.state.isActive?'active':''}></div>
)
}
getIsActive:function(){
return this.state.isActive?'active':''
}
render:function(){
return (
var isActive=this.getIsActive();
<div className={isActive}></div>
)
}
getIsActive:function(){
return this.state.isActive?'active':''
}
render:function(){
return (
<div className={this.getIsActive()}></div>
)
}
使用邏輯與(&&)運(yùn)算符
在React中,null或false是不會(huì)輸出任何內(nèi)容的。
render:function(){
return <div className={this.state.isActive && 'active'}></div>
}
如果這個(gè)布爾值為true,那么后面的值將會(huì)輸出。
非DOM屬性
鍵(key)
key是一個(gè)可選的唯一標(biāo)識(shí)符。
引用(ref)
ref運(yùn)行父組件在render方法之外保持對(duì)子組件的一個(gè)引用。
render:function(){
return (
<div> <input ref='myInput'/> </div>
)
}
當(dāng)設(shè)置了ref后,我們就可以在組件的任何地方使用 this.refs.myInput 獲取這個(gè)引用了。通過(guò)引用獲取到的這個(gè)對(duì)象被稱為 支持實(shí)例 。它并不是真的DOM,而是React在需要時(shí)用來(lái)創(chuàng)建DOM的一個(gè)描述對(duì)象。
我們可以使用 this.refs.myInput.getDOMNode() 訪問(wèn)真實(shí)的DOM節(jié)點(diǎn)。
事件
在所有瀏覽器中,事件名已經(jīng)被規(guī)范化并統(tǒng)一用駝峰形式表示,例如,click變成了onClick,change變成了onChange。
handleClick:function(event){},
render:function(){
return <div onClick={this.handleClick}></div>
}
注意:React自動(dòng)綁定了組件所有方法的作用域,我們永遠(yuǎn)不需要去手動(dòng)綁定。
注釋
在JSX語(yǔ)法中,有兩種方式添加注釋:
<div>
{/*注釋*/}
<p></p>
</div>
作為內(nèi)聯(lián)屬性
<div>
<p
/*注釋*/
></p>
</div>
特殊屬性
由于JSX最后是轉(zhuǎn)換為原生的JavaScript的,所以有一些關(guān)鍵詞是不能使用的,例如:
用 htmlFor 代替 for
用 className 代替 class
樣式
React把所有的內(nèi)聯(lián)樣式都規(guī)范化為了駝峰形式,如果你使用過(guò)原生的JavaScript中的DOM的style屬性,就會(huì)發(fā)現(xiàn)兩者是一致的。
var styles={
borderColor:'#000',
borderRadius:'5'
}
React.createClass({
render:function(){
return (<div style={styles}></div>)
}
})
React 的 JSX 里約定分別使用首字母大、小寫來(lái)區(qū)分本地組件的類和 HTML 標(biāo)簽。
如果往原生 HTML 元素里傳入 HTML 規(guī)范里不存在的屬性,React 不會(huì)顯示它們。如果需要使用自定義屬性,要加 data- 前綴。
<div data-custom-attribute="foo" />
以 aria- 開(kāi)頭的 [網(wǎng)絡(luò)無(wú)障礙] 屬性可以正常使用。
<div aria-hidden={true} />
題外話:
最近好像React的中文官網(wǎng)好像秀逗了,直接點(diǎn)擊進(jìn)去都是英文,如果需要查看中文版,可以這樣:
英文:http://reactjs.cn/react/docs/getting-started.html
中文:http://reactjs.cn/react/docs/getting-started-zh-CN.html
就是加上-zh-CN
更多建議: