react書寫方法

1、定義組件--組件===class##

class 名字 extends React.Component{
 render(){
  return <span>111</span>
 }    
};

2、使用組件##

ReactDOM.render(){
  <名字 />,
 document.getElementById('div1')
};

3、狀態(tài)##

屬性是固定的{this.props.name},狀態(tài)是可變的{this.state}

*向文本框中輸入數(shù)據(jù)span標(biāo)簽內(nèi)容也改變*
*初始化*
constructor(...args){
 super(...args);//執(zhí)行父類的構(gòu)造函數(shù)
 this.state={value:''};//子類的構(gòu)造函數(shù)
}

*方法*
fn(ev){
 this.setState({
  value:ev.target.value
 });
}

*渲染*
render(){
 return <div>
  <input type="text" onChange={this.fn.bind(this)}>
  <span>{this.state.value}</span>
</div>
}

4、react組件的生存周期#

componentWillMount()//創(chuàng)建之前
componentDidMount()//創(chuàng)建之后
componentWillUpdate()//更新之前
componentDidUpdate()//更新之后
componentWillUnmount()//卸載之前
componentWillReceiveRrops()//組件參數(shù)更新

5、父組件子組件###

*實(shí)現(xiàn)點(diǎn)擊按鈕數(shù)字依次加1*
class ChildComp extends React.Component{
 render(){
  return <span>{this.props.name}</span>;
 }
}
class ParentComp extends React.Component{//父組件中渲染子組件
 constructor(...args){
  super(...args);
  this.state={i:0};
 }
 fn(){
  this.setState({
   i:this.state.i+1
  })
 }
 render(){
  return <div>
   <input type="button" value="點(diǎn)擊" onClick={this.fn.bind(this)}/>
   <ChildComp name={this.state.i}/>
  </div>;
 }
}
window.onload=function(){
  ReactDOM.render({
   <ParentComp/>,
   document.getElementById('example')
  })
}

6、組件的節(jié)點(diǎn)refs##

class Title extends React.Component{
 constructor(...args){
  super(...args);
  this.state={color:'black'};
 }
 fn(){
  $(this.refs['s1'].css('color','red'))
 }
 render(){
  return <div>
   <input type="button" value="按鈕">
   <span ref="s1">123456</span>
  </div>
 }
}

6、表單控件##

defaultValue={this.props.a}//定義初始化表單的內(nèi)容不用value
defaultChecked='true'//初始化單選框的狀態(tài)可改變
class Use extends React.Component{
  render(){
   return <form action="http://baidu.com" method="get">
    <input type="text" defaultValue={this.props.a}/>
    <input type="checkbox" defaultValue='true'/>
   </form>
  } 
}  
$(function(){
 <Use a='blue'/>,
 $('view')[0]
})

7、組件間的通信##

 *父組件給子組件通信*
class Child extends React.Component{
 constructor(...args){
  super(...args);
  }
 render(){
   return <div>{this.props.data_a}</div>
 }
}
class Parent extends React.Component{
 constructor(...args){
  super(...args);
  this.a=12;
 }
 render(){
  return <div>
   <Child data_a={this.a}/>
  </div>
 }
}

$(function(){
 ReactDOM.render(
  <Parent/>,
  $('div')[0]
 )
})
*子組件給父組件通信*
class Child extends React.Component{
 constructor(...args){
  super(...args);
  this.num=12;
  }
 render(){
   this.props.back(this.num);//獲取子組件參數(shù)
   return <div>{this.props.data_a}</div>
 }
}
class Parent extends React.Component{
 constructor(...args){
  super(...args);
  this.a=12;
 }
 fn(num){//將子組件參數(shù)傳入父組件
  alert(num)
 }
 render(){
  return <div>
   <Child back={this.fn.bind(this)}/>
  </div>
 }
}

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

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

  • 深入JSX date:20170412筆記原文其實(shí)JSX是React.createElement(componen...
    gaoer1938閱讀 8,183評(píng)論 2 35
  • 最近看了一本關(guān)于學(xué)習(xí)方法論的書,強(qiáng)調(diào)了記筆記和堅(jiān)持的重要性。這幾天也剛好在學(xué)習(xí)React,所以我打算每天堅(jiān)持一篇R...
    gaoer1938閱讀 1,813評(píng)論 0 5
  • It's a common pattern in React to wrap a component in an ...
    jplyue閱讀 3,401評(píng)論 0 2
  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí),對(duì)React的特性、重點(diǎn)和注意事項(xiàng)的提取、精練和總結(jié),可以做為React特性...
    科研者閱讀 8,409評(píng)論 2 21
  • 想說這話很久了,現(xiàn)在說是源起于一會(huì)兒的報(bào)告會(huì)。對(duì),教育報(bào)告會(huì),無休無止,折磨身心,因?yàn)榈都茉诓弊由喜坏貌蝗ィ?本科...
    辛未羊閱讀 536評(píng)論 0 0

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