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;