zoukankan      html  css  js  c++  java
  • Vue--- VueX组件间通信链接(共有方法放入了扩展目录store里面) 1.2

    Vuex结构图再仔细看

    Vuex原理:

    就是  把共有属性放入到一个公共的地方,进行使用

    多组件共享状态, 之前操作方式,由父组件传递到各个子组件。 当路由等加入后,会变得复杂。 引入viewx 解决共享问题。

    存放标准(组件是根据数据更改显示的)

    state 对象数据

    mutations 操作变更state数据

    getters 计算state

    actions  触发mutations

    指挥规则标准(跟那张图有很大的关系)

    App.vue   不存在数据,只有Components  声明组件儿标签名称      指挥actions

    <script>
      import PubSub from 'pubsub-js'
      import TodoHeader from './TodoHeader.vue'
      import TodoList from './TodoList.vue'
      import TodoFooter from './TodoFooter.vue'
      // import storageUtils from '../utils/storageUtils'
      import {mapActions} from 'vuex'
      export default {
        mounted(){
          // 异步获取 todos数据 
          this.$store.dispatch('reqTodos')
        },
        components: {
          TodoHeader,
          TodoList,
          TodoFooter
        }
      };
    </script>
    View Code

    TodosList.vue

    <template>
      <ul class="todo-main">
        <TodoItem v-for="(todo,index) in todos" :todo="todo" :key="index" :index="index"></TodoItem>
      </ul>
    </template>
    
    <script>
      import {mapState} from 'vuex'
      import TodoItem from './TodoItem.vue'
      import storageUtil from '../utils/storageUtils.js'
      export default {
        // 声明接收标签属性
        // props: ['todos'], // 会成为当前组件对象的属性, 可以在模板中直接访问, 也可以通过this来访问
        components: {
          TodoItem
        },
        computed:{
            ...mapState(['todos'])
        },
       watch: {
          todos: {
            deep: true, // 深度监视
            handler: storageUtil.saveTodos
          }
        }
      };
    </script>
    
    <style>
      .todo-main {
        margin-left: 0px;
        border: 1px solid #ddd;
        border-radius: 2px;
        padding: 0px;
      }
    
      .todo-empty {
        height: 40px;
        line-height: 40px;
        border: 1px solid #ddd;
        border-radius: 2px;
        padding-left: 5px;
        margin-top: 10px;
      }
    </style>
    View Code

    actions  指挥调用  mutations

    import {ADD_TODO, DELETE_TODO, SELECT_ALL_TODOS, CLEAR_ALL_COMPLETED,RECEIVE_TODOS} from './mutation-types'
    import storageUtil from '../utils/storageUtils.js'
    export default {
      addTodo ({commit}, todo) {
        commit(ADD_TODO, {todo})
      },
      deleteTodo({commit},index){
          commit(DELETE_TODO,{index})
      },
      selectAllTodos ({commit}, check) {
        commit(SELECT_ALL_TODOS, {check})
      },
      clearALLCompleted({commit}){
          commit(CLEAR_ALL_COMPLETED)
      },
      reqTodos({commit},todos){
          setTimeout(()=>{
              // 读取数据
          const todos = storageUtil.readTodos()
              // 提交数据
            commit(RECEIVE_TODOS,todos)
          },1000)
      }
    }
    View Code

    mutations  指挥调用   state 中的数据

    // 引入 常量types.js   拿出来的都是变量名都是 字符串 
    import {ADD_TODO, DELETE_TODO, SELECT_ALL_TODOS, CLEAR_ALL_COMPLETED,RECEIVE_TODOS} from './mutation-types'
    // 给名称加 []号就是成为变量的 
    // 
    export default {
      [ADD_TODO] (state, {todo}) {
        state.todos.unshift(todo)
      },
      [DELETE_TODO] (state, {index}) {
        state.todos.splice(index, 1)
      },
      [SELECT_ALL_TODOS] (state,{check}){
          state.todos.forEach(todo => (todo.complete = check))
      },
      [CLEAR_ALL_COMPLETED](state){
          state.todos = state.todos.filter(todo => (!todo.complete))
      },
      [RECEIVE_TODOS](state,todos){
          state.todos = todos
      }
    }
    View Code

    App最后显示 就是通过调用获取到数据 

    Submit  更改大小写快捷键

    ctrl+ku 改为大写
    ctrl+kl  改为小写
  • 相关阅读:
    Codechef EDGEST 树套树 树状数组 线段树 LCA 卡常
    BZOJ4319 cerc2008 Suffix reconstruction 字符串 SA
    Codechef STMINCUT S-T Mincut (CodeChef May Challenge 2018) kruskal
    Codeforces 316G3 Good Substrings 字符串 SAM
    Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划
    BZOJ1396 识别子串 字符串 SAM 线段树
    CodeForces 516C Drazil and Park 线段树
    CodeForces 516B Drazil and Tiles 其他
    CodeForces 516A Drazil and Factorial 动态规划
    SPOJ LCS2
  • 原文地址:https://www.cnblogs.com/reeber/p/10641722.html
Copyright © 2011-2022 走看看