import React from 'react'; //主要的庫 import ReactDOM from 'react-dom'; //把jsx轉成可以讓瀏覽器識別的工具 //熱更新 if(module.hot){ module.hot.accept(); } /* 掛在組件。(根節點的掛載) *** ReactDOM.render()是個方法。三個參數: 第一個參數: 模板、組件 第二個參數: 掛載的根節點 第三個參數: 掛載完成以後觸發的回調函數 */ ReactDOM.render( <div>你好,世界!!!! <input // defaultValue = {'123'} value = {'456'} onChange = {()=>{ }} /> </div>, document.getElementById('root'), ()=>{ console.log('掛載成功') } );
import React from 'react'; //主要的庫 import ReactDOM from 'react-dom'; //把jsx轉成可以讓瀏覽器識別的工具 //熱更新 if (module.hot) { module.hot.accept(); } //組件:申明一個類。***必定要注意:類的首字母要大寫(App)。 //組件在掛在的時候,會先執行construction,只會執行一次,而後通過幾個鉤子函數以後,走到render, //只要數據發生變化,就再次執行render,而construction 是不會再改變 class App extends React.Component { constructor(props){ super(props); //super的做用: 1.傳參 2.拿this console.log(props) } render(){ //普通的render中的return上面寫邏輯,return下面是UI let {aaa,bbb,ccc} = this.props return( <div> <h1>組件</h1> <div>{aaa}{bbb}{ccc}</div> </div> ) } } //組件的申明:能夠是個類,還能夠是一個函數 function Ppa(){ return( <div> <h1>組件2</h1> </div> ) } /* 屬性中若是有兩個重複的,後面會把前面的覆蓋 ...[a,b,c] ...{a:'1',b:2,} */ ReactDOM.render( <div> {/* <App aaa='你好' bbb='世界' ccc={[1,2,3]} /> */} <App {...{ aaa:'hello', bbb:'word', ccc:[4,5,6] }}/> <Ppa/> </div>, document.getElementById('root'), );
//以上知識點的綜合應用(小todu)之 app.js(父級)
import React, { Component } from 'react'; import ReactDom from 'react-dom'; import List from './list'; class App extends Component { constructor(props) { super(props); /* state 等同於 Vue中的data: data() { return { } } */
this.state = { val: '', arr: ['第一個li'] }; } /* 改變數據狀態使用 this.setState() */ change = (ev) => { this.setState({ val: ev.target.value }) } keyup = (ev) => { if (ev.keyCode === 13) { let { arr, val } = this.state; arr.push(val) this.setState({ arr ,val:''}); } } render() { let { val, arr } = this.state; let list = arr.map((e, i) => { //循環產生一堆<li> </li> return <List {...{ //map方法會返回一個新數組[<li></li>,<li></li>,...],map方法必定要return,jsx的{}會自動展開數組 key: i, //儘可能保證key的值是惟一的 val: e //val和key是固定寫法,val是<li>的innerText }} />
}); return ( <div className='App'>
<input value={val} onChange={this.change} onKeyUp={this.keyup} />
<ul> {list} </ul>
</div>
); } } export default App;
//子組件 (list.js)
import React, {Component} from 'react' class List extends Component{ render(){ return( <li>{this.props.val}</li> //接收父級的數據 ); } } export default List;