module.exports = { entry: {}, output: {}, plugins: [], module: {}, resolve: {}, devServe: {} }javascript
index.html / .babelrc / package.json / webpack.config.jshtml
删除vue相关文件vue
entry: { // object 类型写法 ---- 推荐写法 app: './day02/src/index.js' // 会将本项目打包成为一个js文件 app.js }, resolve: { extensions: ['.js', '.jsx'], // 表明缺省的后缀名,引入时能够省略的后缀名 --- import axios from './request'; 而不用 import axios from './request.js'; alias: { // 别名 '@': path.join(__dirname, './day02', 'src') // src 的别名为 @ } }
js的语法加react的{}java
src/index.js 入口文件react
import React from 'react'; // 必不可少 import ReactDOM from 'react-dom'; // 将组件渲染至DOM节点 import App from './App'; // 导入组件 ---- 后缀名能够省略,配置过缺省的后缀名 // 将App 组件渲染至真实的DOM节点 // 组件使用就是标签形式,能够是双闭合标签,也能够是单闭合标签 // 组件的首字母必须大写 // 小写为HTML标签 ReactDOM.render( <App />, document.getElementById('app') )
import React from 'react'; // 组件必须导入 // 使用es6的class实现react的组件,组件的首字母大写 // 要实现组件,必须继承React的Component // 必须调用super()方法 ---- 类的构造方法中调用 ----- 若是组件中使用this // 子类必须在constructor方法中调用super方法,不然新建实例时会报错 // 这是由于子类本身的this对象,必须先经过父类的构造函数完成塑造,获得与父类一样的实例属性和方法,而后再对其进行加工,加上子类本身的实例属性和方法。若是不调用super方法,子类就得不到this对象。 class Com extends React.Component { constructor (props) { // 父类能够调用的全部的属性和方法都在props值中 super(props) } // render 函数 继承自父类,是react生命周期的一部分 // 返回一段HTML代码,表示当前组件的结构(至关于vue中的template),HTML代码通常使用()包裹 // 返回的HTML结构的代码的语法 ---- jsx语法 --- javascript xml - 类xml语言 // 只有一个顶级标签 render () { return ( <div> hello world </div> ) } } // 暴露组件 export default Com;
import React from 'react'; // 组件必须导入 // 箭头函数返回一段HTML代码 // const Com = () => { // 业务逻辑 // return ( // <div> // hello react函数式组件 // </div> // ) // } // 箭头函数的自带返回值,返回()表示直接返回HTML代码 const Com = () => ( <div> hello react函数式组件-简写 </div> ) // 暴露组件 export default Com;
全部的组件均可以使用类组件,含有状态(组件初始化数据)的组件必须使用类组件(暂时)webpack
函数式组件又被称之为UI组件以及无状态组件ios
状态 ----- 初始化数据 ---- 相似vue中的dataes6
import React from 'react'; // 组件必须导入 class Com extends React.Component { // 状态放置的位置在构造方法内 // 子类本身的this对象,必须先经过父类的构造函数完成塑造,获得与父类一样的实例属性和方法,而后再对其进行加工,加上子类本身的实例属性和方法 constructor (props) { // props父类一样的实例属性和方法 super(props); this.state = { // react初始化数据 ---- 相似于vue中的data msg: 'hello react + state' } } render () { return ( <div> { this.state.msg } </div> ) } } // 暴露组件 export default Com;
return ( <div> { // 111 -- 单行注释 } { /* 222222 --- 多行注释 */ } </div> )
js的遍历,加{}变react的遍历,遍历选项返回jsx语法的结构web
import React, { Component } from 'react'; // 解构赋值 class Com extends Component { constructor (props) { super(props); this.state = { msg: 'hello world', list: ['aa', 'bb', 'cc', 'dd'] // ++++++++++++++ } } render () { return ( <div> { this.state.msg } { // +++++++++++++++++++++++++++++++++++++++++++++++++ this.state.list.map((item, index) => { return ( <p key={ index }> { item } </p> ) }) } </div> ) } } export default Com;
import React, { Component } from 'react'; // 解构赋值 class Com extends Component { constructor (props) { super(props); this.state = { msg: 'hello world', // ++++++++++++++++++++++++ list: [ { brand: 'iphone', arr: ['iphone6', 'iphone7', 'iphone8', 'iphonex', 'iphone11'] }, { brand: 'huawei', arr: ['p20', 'p30', 'meta20', 'meta30'] } ] } } render () { return ( <div> { this.state.msg } { // +++++++++++++++++++ this.state.list.map((item, index) => { return ( <div key={ index }> <h1>{ item.brand }</h1> { // *********************** item.arr.map((itm, idx) => { return ( <p key = { idx }>{ itm }</p> ) }) } </div> ) }) } </div> ) } } export default Com;
var Com = React.createClass({ initialState () { return { msg: '' } } render () { return () } })
import React, { Component } from 'react'; // 解构赋值 class Com extends Component { constructor (props) { super(props); this.state = { msg: 'hello world', list: ['aa', 'bb', 'cc', 'dd'], list1: [<p key="1">aaa</p>, <p key="2">bbb</p>] } } render () { // ++++++++++++++++++ let arr = []; this.state.list.map((item, index) => { arr.push( <p key={ index }> { item } </p> ) }) // +++++++++++++++++++ return ( <div> { this.state.msg } { this.state.list } { this.state.list1 } { // ++++++++++++++++++ arr } </div> ) } } export default Com;
import React, { Component } from 'react'; // 解构赋值 class Com extends Component { constructor (props) { super(props); this.state = { flag: true } } render () { if (this.state.flag) { return ( <div> 若是条件为真我就显示 </div> ) } else { return ( <div> 若是条件为假我就显示 </div> ) } } } export default Com;
import React, { Component } from 'react'; // 解构赋值 class Com extends Component { constructor (props) { super(props); this.state = { flag: false } } render () { return ( <div> { // +++++++++++++++++++++++++++++++++ this.state.flag ? <p>真</p> : <p>假</p> } </div> ) } } export default Com;
组件必须导入Reactjson
添加状态必须在构造方法,添加构造方法必须执行super()
不要在jsx语法中使用 if - else,可使用三目运算、或运算、与运算
不要在jsx语法中使用 for 循环, 使用 map 循环
自定义函数
生命周期钩子函数
修改状态
组件
组件传值