react基础
一、脚手架创建项目
creat-react-app project
二、脚手架配置代理
package.json proxy:'http://a.kr01.net'
const proxy = require('http-proxy-middleawre')
module exports = function(app){
app.use(
proxy('/api1',{
target:'http://localhost:8000',
changeOrigin:true,
pathRewrite:{'^api1':''}
})
)
}
三、项目结构
public
index.html
favicon.ico
src
components
app.jsx
index.js
四、样式模块话
import a from a.module.css
<div className={a.color}><div/>
五、diss算法

对数据进行添加,删除等逆序操作,DOM浪费更新,效率太低。
结构中包含输入控件,输入控件界面会显示错误。
<ul>
<li key=0>0<input type=text/><li/>
<li key=1>1<input type=text/><li/>
<li key=2>2<input type=text/><li/>
<ul/>
六、消息订阅与发布
import PubSub from 'pubsub-js'
PubSub.subScribe('sendData',(_,data)=>{
})
PubSub.public('sendData',{a:1})
redux

一、store

import {createStore} from 'redux'
import reducer from './reducer'
export default createStore(reducer)
二、rudecer
reducer(preState == 0,action){
const { type , data } = action
switch(type){
case 'increment'
return preState + data
case 'decrement'
return preState - data
default
return preState
}
}
三、action

export createIncrementAction = data => ({type:'increment',data})
export createIncrementAction = data => {
return (dispatch)=>{
dispatch(createIncrementAction(data))
}
}
四、组件使用api
import store from '.../store'
import {createIncrementAction} from '../action'
<div>{store.getState()}</div>
store.dispatch(createIncrementAction(1))
componentDidMount(){
store.subscribe(()=>{
this.setState({})
})
}
store.subscribe(()=>{
ReactDom.renser(<App/>,document.getElementById('root'))
})