美文网首页
react梳理回顾(一)

react梳理回顾(一)

作者: 码代码的小公举 | 来源:发表于2018-09-19 14:09 被阅读14次

    已经使用react2年左右了,打算梳理一下,想到什么就写一点啦。
    涉及内容(在一个项目中会用到的一些关键内容或者词汇):
    react,MVC,虚拟 dom(render树,Diff算法), JSX,function,class,state,props ... route...redux,actions(fetch,可以是其他) reducers 中间件(常用redux-thunk或redux-saga) dispatch(types) connect,bindActionCreators ...package(依赖,组件包)create-react-app (快速搭建) git(项目管理)另外,还需要一个可爱的你

    1 react

    react属于MVC(modal view controller)框架,可使用JSX(JavaScript扩展语法)数据流为单向响应(单项方便追查问题)。
    虚拟 dom:可以高效的渲染页面,将对真实dom的多次操作经过diff算法存入js对象一次操作,节省真实dom的操作。
    diff算法:我理解上是通过二叉树模式的虚拟dom进行逐层的比较,找出变化的第一个节点,更替本身及以下内容,保留其它,功能上来说,减少dom操作以及渲染影响范围从而减少我们的性能烦恼。
    props: 传入组件,改变会造成页面渲染(reducers派发,父组件传入等)
    state: 组件内部,改变会造成页面渲染(不用渲染页面时的内部数据传递使用this.name)
    生命周期:componentWillMount(渲染前) componentDidMount(第一次渲染后,此时一般会发送获取需要数据的action) componentWillReceiveProps(收到新的prop后页面更新前,常用语发送action后获取到新数据的时候进行数据保存和调整) shouldComponentUpdate(接收到新的prop或者state时调用) componentWillUpdate(接收到新的prop或者state后页面更新前) componentWillUnmount(组件从 DOM 中移除之前,此处通常停止一些计时器之类的操作)
    antd:常用的react ui框架,有皮肤的感念。

    2 route
    /**
     * 项目入口
     */
    
    import React, { Component } from 'react';
    import { Provider } from 'react-redux'
    import { Route, BrowserRouter, Switch } from 'react-router-dom'
    
    import configureStore from './redux/configureStore'
    import './App.css';
    import Login from './containers/login'
    import Main from './containers/main'
    
    const store = configureStore()
    
    class App extends Component {
      render() {
        return (
          <Provider store={store}>
            <BrowserRouter>
              <Switch>
                <Route path="/login" component={Login}/>
                <Route path='/' component={Main}/>
              </Switch>
            </BrowserRouter>
          </Provider>
        );
      }
    }
    
    export default App;
    
    
    中间件
    /**
     * @desc react-router-redux及history配置
     **/
    
    import { createStore, combineReducers, applyMiddleware, compose } from 'redux'
    import thunkMiddleware from 'redux-thunk'
    //import { routerReducer, routerMiddleware } from 'react-router-redux'
    
    import * as reducers from './reducers'
    
    
    export default function configureStore(history, initialState) {
      const reducer = combineReducers({
        ...reducers,
        //routing: routerReducer,
      })
    
      const store = createStore(
        reducer,
        initialState,
        compose(
          applyMiddleware(
            thunkMiddleware,
            //routerMiddleware(history),
          ),
        ),
      )
      return store
    }
    

    主要中间件:redux-thunk或者redux-saga
    都是负责异步操作,redux-saga相对复杂,可以在请求的各个阶段进行操作。

    相关文章

      网友评论

          本文标题:react梳理回顾(一)

          本文链接:https://www.haomeiwen.com/subject/jipbnftx.html