【vuex的安装,v3调用五大核心,计算属性的set,get、ajax】

vuex的安装

 vuex并不是vue的内置工具;而是一个插件;需要安装

  如果没有:
  1. 安装: npm install vuex --save
  2. 新建一个js文件:
      import {createStore} from 'vuex'

      export default createStore({
        五个核心的概念

      })
  3. 在main.js内引入 新建一个js文件;
      通过use挂载


  vuex并不是适合所有的项目;只适合大型的项目

vue内的严格模式通过在vuex中设置属性strict为true开启、与state同级

  strict: true, //开启严格模式

调用vuex中的五大核心

//调用vuex中的五大核心
  import {computed} from 'vue'
  import {useStore} from 'vuex'
  const  store = useStore()

  let numApi = computed(()=>{
      return store.state.num    
  })

  let calcNum = computed(()=>{
      return store.getters.getNum
  })
  const addHanlde = ()=>{
      store.commit('addNum')
  }
  const changeNum = ()=>{
      store.dispatch('actionChangeNum')
  }

计算属性的set和get

  • 计算属性的值不能直接更改;想要更改必须使用 get 和 set
    vue3中通过以下方法来实现
import { ref, computed } from "vue";
import { useStore } from "vuex";
const store = useStore();
// let num = computed(() => {
//     return store.state.num
// });

let num = computed({
    get(){
        return store.state.num
    },
    set(val){
        store.commit('changeNum',val)
    }
})

ajax

 发起ajax的步骤
        1. 实例化核心对象  let 名称 = new XMLHttpRequest()
        2. 建立链接     名称.open(请求方式(get/post/delete/head..),请求的链接/接口的地址,同步异步)
        3. 发送请求   名称.send()
        4. 接收返回的值  名称.onreadystatechange =  function(){
             接收值
        }

例如

  let ajax = new XMLHttpRequest() // 实例化核心对象
          建立链接 ajax.open(请求方式,请求链接,同步或者异步(默认异步))
        ajax.open('GET','https://api.it120.cc/small4/banner/list')  // 建立链接
        /**
         * 发送请求 ajax.send()
         */
        
        ajax.send() // 发送请求;如果有参数,在此处带参数
        /**
         * 接收值
         * 就是监听 readyState状态值的变化
         */
        ajax.onreadystatechange = function () {
            if(ajax.readyState==4 && ajax.status==200){
                console.log(JSON.parse(ajax.response));
            }
        }
  • 我们使用的axios就是在ajax基础上的封装;我们使用promise 封装成 一个简易的axios

建议封装

 function axios(method,url,data) {
            return new Promise((resolve,reject)=>{
                let ajax = new XMLHttpRequest()
                ajax.open(method,url)
                ajax.send(data)

                ajax.onreadystatechange = function () {
                    if(ajax.readyState==4 && ajax.status==200){
                        resolve(JSON.parse(ajax.response))
                    }
                }
            })
        }

        axios('GET','https://api.it120.cc/small4/banner/list').then(res=>{
            debugger
        })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的使用Vuex实现TodoList的示例代码: 首先,需要安装Vuex: ``` npm install vuex --save ``` 然后,创建一个store.js文件,用于定义Vuex的状态、mutations、actions等: ```javascript import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); const store = new Vuex.Store({ state: { todos: [ { id: 1, text: '学习Vue', completed: false }, { id: 2, text: '学习Vuex', completed: false }, { id: 3, text: '学习Vue Router', completed: false } ] }, mutations: { addTodo (state, payload) { state.todos.push({ id: Date.now(), text: payload.text, completed: false }); }, toggleTodo (state, payload) { const todo = state.todos.find(todo => todo.id === payload.id); todo.completed = !todo.completed; }, deleteTodo (state, payload) { state.todos = state.todos.filter(todo => todo.id !== payload.id); } }, actions: { addTodo ({ commit }, payload) { commit('addTodo', payload); }, toggleTodo ({ commit }, payload) { commit('toggleTodo', payload); }, deleteTodo ({ commit }, payload) { commit('deleteTodo', payload); } } }); export default store; ``` 在上面的代码中,我们定义了一个todos数组作为状态,然后定义了三个mutations来修改这个状态。addTodo用于添加一个todo项,toggleTodo用于切换一个todo项的完成状态,deleteTodo用于删除一个todo项。最后,我们定义了三个actions,这些actions用于触发mutations来修改状态。 接下来,我们可以在组件中使用Vuex: ```vue <template> <div> <h2>TodoList</h2> <form @submit.prevent="addTodo"> <input type="text" v-model="newTodoText"> <button type="submit">Add Todo</button> </form> <ul> <li v-for="todo in todos" :key="todo.id" :class="{ completed: todo.completed }"> <input type="checkbox" v-model="todo.completed" @change="toggleTodo(todo)"> <span>{{ todo.text }}</span> <button @click="deleteTodo(todo)">Delete</button> </li> </ul> </div> </template> <script> import { mapState, mapActions } from 'vuex'; export default { computed: { ...mapState(['todos']), newTodoText: { get () { return ''; }, set (value) { this.$data.newTodoText = value; } } }, methods: { ...mapActions(['addTodo', 'toggleTodo', 'deleteTodo']) } }; </script> ``` 在上面的代码中,我们使用了Vuex提供的mapState和mapActions辅助函数,来将todos状态和addTodo、toggleTodo、deleteTodo等actions映射到组件的computed和methods中。 最后,在组件的created钩子中,我们可以使用Vuex的actions来初始化状态: ```javascript import store from './store'; export default { created () { this.$store.dispatch('addTodo', { text: '学习Vuex' }); this.$store.dispatch('addTodo', { text: '学习Vue Router' }); }, store }; ``` 以上就是使用Vuex实现TodoList的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值