• 1.mobx状态管理

      安装:creact-react-app mobx

      action、store、reducer。
      action是一个函数,事件调用actions直接修改state,Actions是唯一可以修改state的东西,并且可能有副作用,副作用是修改完之后,会激起一些计算属性的更新。
      state是可观测的(@observable),不能包含冗余或者推导数据,可以是数组啊,类啊,等等。
      Computed类似于vue中的计算属性。
      Reactions当观察的东西发生变化,就可以做一些事情。 在store里面去映射一个函数,这个函数会根据原有的值进行自动响应式的修改,返回一个新值。最后触发一个Reactions,类似于redux的subscribe,给reactions传两个函数,第一个函数是我检测的变量的列表,或者state列表,第二个函数就是要检测变化的回调函数,可以再去调Actions,做新的触发。
      因为store要返回全新的,所以适合用immitable。

      vueX

      action、mutation、state、component。
      它自动做了响应式处理,不像redux需要订阅。

      装饰器:@action和@observable增强原有的类或方法的能力,类似于高阶组件。
      1安装

      yarn add mobx

      2.observbale 把我们的数据源变成可观测的,数据实现响应。

      ES6的装饰器在react中有时不支持,要安装插件
      ()写法一:
      数组、对象、ES6中的map等都可以变成可观察的。
      例:写一个可观测的数组:const arr = observable (['a','b'])
      数值不可观察。
      如果想让数值变成可观察的,使用box()或get()、set()
      cosnt num = observable.box()
      num.value =
      ()写法二:必须要写在类中
      @observable
      const arr = ['a','b']
      import {observable} from "mobx" //可观察的
      export default()=>{
      const arr = observable(["a","b"]) //响应式
      const obj = observable({x:,y:})
      console.log(arr) //打印结果如下 略
      console.log(obj) //打印结果如下图2. 略
      console.log(Array.isArray(arr)) //打印true,证明还是数组。 return null
      }

      2.弹射

      目的:自己可以做深度的webpack配置。这个过程是不可逆的。
      控制台输出:yarn ejext

      3.安装支持装饰器的插件(typescript下的项目不需要装)
      yarn add babel-plugin-tranform-decorators-legacy(不一定行)

      4.decorators装饰器

      export default class Mobx extends Component{
      @observable
      arr = ['a','b'] //这时arr成为类里面的属性,就可以当成一个可观察的对象去引用了/
      render(){
      console.log(this.arr)
      return null
      } }

      5.(@)computed 计算属性,可以当作装饰器用,也可以当方法用。
      (1)computed作为函数。(写在render中)

      export default class Mobx extends Component{
      @observable
      name = "xinya"
      render(){
      cosnt otherName = computed(()=>{
      return this.name
      })
      otherName.observe((changeValue)=>{ //检测变量变化,changeValues是一个对象,里面有newValue和oldValue
      console.log(changeValue.newValue)
      })
      this.name = "kaiqin"
      return null
      } }

      (2)@computed 计算属性作为装饰器,必须在函数前面加get,它不需要调用,可以直接读取。

      export default class Mobx extends Component{
      @observable
      name = "xinya"
      @computed
      get otherName(){
      return this.name +"!!"
      }
      render(){
      autorun(()=>{ //会检测name变化,即使没有变化,也会打印一次。根据依赖值变化自动执行,不管有没有变化,刚开始都会执行一次。
      console.log(this.name+"!!")
      })
      setTimeOut(()=>{
      this.name = "kaiqin"
      this.otherName
      },) return null
      } }

      6.when只执行一次
      when有两个参数,都是回调函数,当第一个参数返回true的时候,第二个参数才会执行。

      7.Reaction 第二个回调函数的参数data,是第一个回调函数的返回值。
      第一个参数是函数,有返回值data。第二个参数也是一个函数,这个函数又有两个参数,第一个参数是前面的返回值data,第二个参数是reaction。
      和autorun的不同点是reaction第一次不执行,只有修改之后执行。

      reaction(()=>{
      return this.name
      },(data)=>{
      console.log(data) //shaojun
      })

      setTimeout(()=>{
      this.name = "shaojun"
      this.age =
      })

      8.@action 就是一个函数
      @computed
      get myJoin(){
      return this.name + this.age
      }
      @action
      printValue(){
      console.log(this.myJoin) //调用计算属性不用加括号
      }
      render(){
      setTimeOut(()=>{
      this.printValue()
      },100)
      }
      9.案例

      10.将mobx和react结合,使所有组件都被注入了store
      安装yarn add mobx-redux
      import {Provider } from "mobx-react"
      import {inject} from "mobx-react" //类似与connect
      @inject('store')
      <Provider store={store}>
      <Home>
      <Provider>
      //在自文件中

      runInAction
      可以跟踪值的变化

       
       
       
       
    • 凯琴
       
      10:25
      1.mobx状态管理
      安装:creact-react-app mobx

      action、store、reducer。

      action是一个函数,事件调用actions直接修改state,Actions是唯一可以修改state的东西,并且可能有副作用,副作用是修改完之后,会激起一些计算属性的更新。

      state是可观测的(@observable),不能包含冗余或者推导数据,可以是数组啊,类啊,等等。

      Computed类似于vue中的计算属性。

      Reactions当观察的东西发生变化,就可以做一些事情。

      在store里面去映射一个函数,这个函数会根据原有的值进行自动响应式的修改,返回一个新值。最后触发一个Reactions,类似于redux的subscribe,给reactions传两个函数,第一个函数是我检测的变量的列表,或者state列表,第二个函数就是要检测变化的回调函数,可以再去调Actions,做新的触发。

      因为store要返回全新的,所以适合用immitable。

      vueX
      action、mutation、state、component。
      它自动做了响应式处理,不像redux需要订阅。

      装饰器:@action和@observable增强原有的类或方法的能力,类似于高阶组件。

      1安装
       yarn add mobx

      2.observbale    把我们的数据源变成可观测的,数据实现响应。

      ES6的装饰器在react中有时不支持,要安装插件
      (1)写法一:
      数组、对象、ES6中的map等都可以变成可观察的。
      例:写一个可观测的数组:const arr = observable (['a','b'])
      数值不可观察。
      如果想让数值变成可观察的,使用box()或get()、set()
      cosnt num = observable.box(9)
      num.value = 10

      (2)写法二:必须要写在类中

      @observable
      const arr = ['a','b']

      import {observable} from "mobx"             //可观察的

      export default()=>{
          const arr  = observable(["a","b"])           //响应式
           const obj = observable({x:0,y:1})

      console.log(arr)     //打印结果如下 
           console.log(obj)     //打印结果如下图2.    
           console.log(Array.isArray(arr))          //打印true,证明还是数组。      
            
          return null
      }
      1.
      详情见ES6的proxy。
      2.

      2.弹射
      目的:自己可以做深度的webpack配置。这个过程是不可逆的。

      控制台输出:yarn ejext
      3.安装支持装饰器的插件(typescript下的项目不需要装)
      yarn add babel-plugin-tranform-decorators-legacy(不一定行)

      4.decorators装饰器

      export default class Mobx extends Component{
         @observable
          arr = ['a','b']                   //这时arr成为类里面的属性,就可以当成一个可观察的对象去引用了/
        render(){
           console.log(this.arr)
           return null
      }
         
      }

      5.(@)computed     计算属性,可以当作装饰器用,也可以当方法用。
      (1)computed作为函数。(写在render中)

      export default class Mobx extends Component{
         @observable
         name = "xinya"
         render(){
             cosnt otherName = computed(()=>{
                 return this.name
             })
             otherName.observe((changeValue)=>{     //检测变量变化,changeValues是一个对象,里面有newValue和oldValue
                    console.log(changeValue.newValue)
          })
           this.name = "kaiqin"
           return null
      }
         
      }
      (2)@computed   计算属性作为装饰器,必须在函数前面加get,它不需要调用,可以直接读取。

      export default class Mobx extends Component{
         @observable
         name = "xinya"

      @computed
         get otherName(){
            return this.name +"!!"
        }
        render(){
           autorun(()=>{         //会检测name变化,即使没有变化,也会打印一次。根据依赖值变化自动执行,不管有没有变化,刚开始都会执行一次。
              console.log(this.name+"!!")
         })
          setTimeOut(()=>{
              this.name = "kaiqin"
              this.otherName
      },1000)
          
           return null
      }
         
      }
      6.when只执行一次
      when有两个参数,都是回调函数,当第一个参数返回true的时候,第二个参数才会执行。

      7.Reaction   第二个回调函数的参数data,是第一个回调函数的返回值。

      第一个参数是函数,有返回值data。第二个参数也是一个函数,这个函数又有两个参数,第一个参数是前面的返回值data,第二个参数是reaction。
      和autorun的不同点是reaction第一次不执行,只有修改之后执行。

      reaction(()=>{
         return this.name
      },(data)=>{
         console.log(data)         //shaojun
      })

      setTimeout(()=>{
         this.name = "shaojun"
         this.age = 
      })

      8.@action  就是一个函数
      @computed
      get myJoin(){
          return this.name + this.age
      }

      @action
      printValue(){
        console.log(this.myJoin)        //调用计算属性不用加括号
      }

      render(){
        setTimeOut(()=>{
         this.printValue()
      },100)

      }

      9.案例

      10.将mobx和react结合,使所有组件都被注入了store
      安装yarn add mobx-redux

      import {Provider }  from "mobx-react"
      import {inject}  from "mobx-react"    //类似与connect

      @inject('store')
      <Provider store={store}>
          <Home>
      <Provider>
      //在自文件中

      runInAction
      可以跟踪值的变化

mobx使用的更多相关文章

  1. mobx @computed的解读

    写在前面:我一开始看不懂官网的@computed的作用,因为即使我把@computed去掉,依然能正确的report,然后我百度谷歌都找不到答案,下面都是我自己的理解,如果是有问题的,不对的,请务必留 ...

  2. 十分钟介绍mobx与react

    原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...

  3. mobx源码解读3

    计算属性 function Todo() { this.id = Math.random() mobx.extendObservable(this, { aaa: 222, bbb: 11, ccc: ...

  4. mobx源码解读4

    这节介绍一下mobx的变动因子的稳定性. mobx整个系统是由ObservableValue, ComputedValue, Reaction这三个东西构建的 ObservableValue 是最小的 ...

  5. mobx源码解读2

    我们将上节用到的几个类的构造器列举一下吧: function Reaction(name, onInvalidate) { if (name === void 0) { name = "Re ...

  6. mobx源码解读1

    mobx是redux的代替品,其本身就是一个很好的MVVM框架.因此花点力气研究一下它. 网上下最新的2.75 function Todo() { this.id = Math.random() mo ...

  7. [React + Mobx] Mobx and React intro: syncing the UI with the app state using observable and observer

    Applications are driven by state. Many things, like the user interface, should always be consistent ...

  8. mobx react

    目录结构: Model/index.js 'use strict'; import { action, autorun, observable, computed } from "mobx& ...

  9. Mobx使用详解

    Mobx是一个功能强大,上手非常容易的状态管理工具.就连redux的作者也曾经向大家推荐过它,在不少情况下你的确可以使用Mobx来替代掉redux. 本教程旨在介绍其用法及概念,并重点介绍其与Reac ...

  10. React框架 dva 和 mobx 的使用感受

    最近在用react写web项目,领导为了让前端便于维护要求都用react作为开发基础,框架选型不限.在使用 react 的时候或多或少会接触到状态管理,从开始学 react 到现在也挺久了,做一些前端 ...

随机推荐

  1. 【miscellaneous】网络摄像机

    自20世纪90年代初期网络摄像机开始诞生,产业已历经20余年的演变. "IP大时代"的口号在安防领域已响彻已久,但也是自2015年至今才开使有了真正的底气.当全面超越模拟已尘埃落定 ...

  2. java反射机制学习笔记

    内容引用自:https://www.cnblogs.com/wkrbky/p/6201098.html https://www.cnblogs.com/xumBlog/p/8882489.html,本 ...

  3. 10大IT社区

    技术社区导航 http://tooool.org/ 1. cnblogs 人多内容质量最高 2.csdn csdn的注册人数多,但新手多 3.java eye java eye注册用户刚突破10万,但 ...

  4. 关于Eclipse及JDK安装过程中的一些问题

    一,环境变量的配置 1.配置CLASSPATH系统变量 CLASSPATH系统变量为类查找路径 ①.在使用javac进行编译时遇到import时候就会通过这个变量里面配置的路径去查找.如果配置的是目录 ...

  5. sql server 函数详解(3)数据类型转换函数和文本图像函数

    数据类型转换函数 文本和图像函数 --在同时处理不同数据类型的值时,SQL Server一般会自动进行隐士类型转换.对于数据类型相近的值是有效的,比如int和float,但是对于其它数据类型,例如整型 ...

  6. 可以提升幸福感的js小技巧(上)

    1. 类型强制转换 1.1 string强制转换为数字 可以用 *1来转化为数字(实际上是调用 .valueOf方法) 然后使用 Number.isNaN来判断是否为 NaN,或者使用 a!==a 来 ...

  7. openlayers之地图测距侧面

    项目背景vue-cli3.0 public下html需要引入文件 <link rel="stylesheet" href="<%= BASE_URL %> ...

  8. vue中如何引入css文件

    两种方式引入css文件,一种是直接在main.js中引入(也可以在其他的.vue文件中的<script></script>标签中),即下面这种写法: import 'eleme ...

  9. Spring Boot自定义Redis缓存配置,保存value格式JSON字符串

    Spring Boot自定义Redis缓存,保存格式JSON字符串 部分内容转自 https://blog.csdn.net/caojidasabi/article/details/83059642 ...

  10. Vue示例教程

    <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml&q ...