首页 > 其他 > 详细

vuex

时间:2021-06-05 11:13:39      阅读:29      评论:0      收藏:0      [点我收藏+]

vuex是什么
技术分享图片

vuex的几个核心概念

1.State(放状态信息)

1)state的基础用法就是:将状态信息放入state,state就会帮忙管理,其他组件可以通过 $store.state.属性名称 来进行使用

2)单一状态树
只使用一个store

2.Getters

getters的用法类似于计算属性computed,计算属性的用法就是(当数据想要展示的时候,直接使用就可以,如果数据必须经过一系列变化之后再被使用,就可以通过计算属性完成这些操作)

getters的用法就是(state中存放了一些状态(这些状态可以看成数据),这些数据需要经过一系列变化之后给其他组件使用,则可以在getters里定义各种方法,然后在其他组件中通过 $store.getters.属性名称 来获取对应的数据)

案例一:state中定义了 counter:10000, 现在想得到counter的平方

     const store = new Vuex.Store({
       state: {
          counter: 1000
       },
       getters: {
          powerCounter(state) {
          return state.counter * state.counter;
          }
       },

   <!-- 其他组件中调用 -->
   <div id="app">
      <h2>{{ $store.state.counter }}</h2>

      <h2>{{ $store.getters.powerCounter }}</h2>
  </div>

案例二:state中定义了 关于学生学号、姓名、年龄信息的数组,想要将大于20岁的学生的信息显示出来

  const store = new Vuex.Store({
    state: {
      students: [
       { id: 100, name: "张三", age: 25 },
       { id: 101, name: "李四", age: 18 },
       { id: 102, name: "王五", age: 12 },
       { id: 103, name: "赵四", age: 22 }
      ]
    },
    getters: {
      more20stu(state) {
        return state.students.filter(s => s.age >= 20);
      }
    },

  <!-- 其他组件中调用 -->
  <div id="app">
    <h2>-----大于20的学生的信息------</h2>
    <h2>{{ $store.getters.more20stu }}</h2>
  </div>

案例三:想要获取年龄大于20的学生的个数

    const store = new Vuex.Store({
      state: {
      students: [
       { id: 100, name: "张三", age: 25 },
       { id: 101, name: "李四", age: 18 },
       { id: 102, name: "王五", age: 12 },
       { id: 103, name: "赵四", age: 22 }
      ]
    },
    getters: {
      more20stu(state) {
        return state.students.filter(s => s.age >= 20);
      },

   <!-- 两种实现方法 -->
      more20stulen(state) {
        return state.students.filter(s => s.age >= 20).length;
      },
     more20stulength(state, getters) {
        return getters.more20stu.length;
      }
    },

  <!-- 其他组件中调用 -->
  <div id="app">
    <h2>-----大于20的学生的信息------</h2>
    <h2>{{ $store.getters.more20stu }}</h2>

    <h2>----大于20的学生个数为------</h2>
    <h2>{{ $store.getters.more20stulen }}</h2>
    <h2>{{ $store.getters.more20stulength }}</h2>
  </div>

案例四:不提前规定年龄,这个年龄想要通过用户输入一个年龄值,然后返回相符合要求的学生信息

     getters: {
         less20stu(state) {
            return function(age) {
                return state.students.filter(s => s.age <= age);
            };

         }
      },

   <!-- 其他组件中调用 -->
      <div id="app">
        <h2>-----小于20的学生的信息------</h2>
           <!--用户输入年龄-->
        <h2>{{ $store.getters.less20stu(20) }}</h2>
      </div>

vuex

原文:https://www.cnblogs.com/larissa404/p/14851755.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!