zoukankan      html  css  js  c++  java
  • 【React】----flux 学习总结

    flux:
      脚手架安装:
      cnpm install create-react-app
      create-react-app my-demo
      安装路由dom
      cnpm install react-router-dom --save-dev
      cnpm install flux --save-dev
    1、是一种构架思想,专门解决软件的结构问题
    2、基本概念:
      1、四部分组成
        view:视图层
        action:视图发出的动作
        dispatcher:接收action 执行回调
        store:存放数据,一旦发生改变就(events中的emit、on)提醒view更新页面
    2、执行流程:
      用户访问view,发出动作action,dispatcher接收到action,store通过事件更改数据,更改完毕后通过events中的emit、on通知view层更新页面
    3、代码操作流程
      1、创建store仓库,从events模块引入emit on方法
        import EventEmitter from 'events'
        合并对象
        const Store = Object.assign({},EventEmitter.pototype,{
        state:{}存放数据
          getState(){} 获取数据
        })
        export default Store 导出Store
        view中引入Store
        this.state=Store.getState()

                  

      2、view 触发事件 发出action
        const action={
          type:'',
          value:''
        }
        

        (创建dispatcher
        import {Dispatcher} from 'flux'
        const dispatcher = new Dispatcher()

        export default dispatcher)

        引入dispatcher
        import dispathcer from '...'
        通过dispatcher的dispatch方法接收action
        dispatcher.dispatch(action)
      
        在dispatcher中接收
        import
        dispatcher.register((action)=>{
        通过判断action.type类型,来调用Store的方法执行修改操作,所以要引入store
          switch (action.type){
            case 'CHANGE_ITEM'
              Store.handleChange(action.value)
              break;
            default:
            break;
          }
        })

        

      3、数据发生改变,dispatcher通知store更改数据
        handleChange(val){
          this.state.…… = val
          通过events中的emit触发
          this.emit('updata')
         }
          定义一个方法,哪个组件需要调用数据,就调用这个方法
          handleUpdate(fn){
            this.on('updata',fn)
          }

        

       4、view中调用handleUpdate方法,来更改数据
        Store.handleUpadate(this.handleUpdate.bind(this))
          

        handleUpdate(){
          this.setState(Store.getState())
        }


  • 相关阅读:
    学习《Building Applications with FME Objects》 之十 使用集合
    oracle左右连接的另外表示方法
    拥抱SQLAlchemy 之二 拉拉手,我请你去看电影~
    Oracle中的Union、Union All、Intersect、Minus
    System.Data.SQLite测试
    SmartSVN + google code
    学习《Building Applications with FME Objects》 之九 高级要素处理
    Django静态文件配置备忘录
    测试oracle with as
    测量坐标系中单个多边形面积解析法计算的程序源代码
  • 原文地址:https://www.cnblogs.com/asenper/p/9887810.html
Copyright © 2011-2022 走看看