vuex简单描述、用法

vuex的简单描述

vuex: Vue.js 应用程序开发的状态管理模式
store: 单一状态树
getter: 可以认为是 store 的计算属性
mutation:
更改 Vuex 的 store 中的状态的唯一方法是提交 mutation,同步
Action:
提交的是 mutation,而不是直接变更状态。
Action 可以包含任意异步操作
Module:
每个模块拥有自己的 state、mutation、action、getter

vuex的引用及方法定义

1、main.js中,将store注入根节点,每一个组件中就可以使用了

import store from './store'

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

2、store文件夹中新建index.js内容如下

import Vue from 'vue'

// 引入vuex
import Vuex from 'vuex'

// 注册vuex
Vue.use(Vuex)

// 定义类型
const types = {
  SET_AUTHENTICATED:"SET_AUTHENTICATED",
  SET_USER:"SET_USER"
}

// 定义数据状态
const state = {
  isAuthenticated:false,
  user:{}
}

// 获取数据
const getters = {
  isAuthenticated:state => state.isAuthenticated,
  user: state => state.user
}

// 修改状态方法定义
const mutations = {
  // 设置是否授权,
  [types.SET_AUTHENTICATED](state,isAuthenticated){
    if(isAuthenticated) state.isAuthenticated = isAuthenticated;
    else state.isAuthenticated = false;
  },
// 设置user
  [types.SET_USER](state, user){
    if(user) state.user = user;
    else state.user = {};
  }
}

// 异步操作用于调用mutation
const actions = {
  setAuthenticated: ({commit}, isAuthenticated) => {
    commit(types.SET_AUTHENTICATED, isAuthenticated)
  },
  setUser: ({commit},user) => {
    commit(types.SET_USER,user)
  },
  // 退出登录--
  clearCurrentState:({commit}) => {
    commit(types.SET_AUTHENTICATED, false)
    commit(types.SET_USER,null)
  }
}

// 导出对象
export default new Vuex.Store({
  state,
  getters,
  mutations,
  actions
})

使用:

获取数据:
获取之后可直接使用html中可以直接用{{user}}

export default {
    name:"head-nav",
    // 获取vuex中user数据
    computed: {
        user(){
            return this.$store.getters.user
        }
    },
}

设置数据:

//设置vuex store
this.$store.dispatch("clearCurrentState");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。使用Vue3和TypeScript来仿造京东首页是可行的,需要使用Vue CLI来创建项目,然后使用Vue Router来管理路由,使用Vuex来管理状态,使用axios来进行数据请求,使用Element UI来构建页面组件。同时,需要熟悉Vue3和TypeScript的语法和特性,以及京东首页的设计和布局。 ### 回答2: 使用Vue 3和TypeScript可以轻松地仿造京东首页并编写一个类似的页面。首先,我们需要建立一个Vue项目,并确保项目中安装了Vue 3和TypeScript依赖。 接下来,我们可以根据京东首页的布局和组件结构来重建页面。可以使用Vue的组件化开发方式,将页面拆分为多个组件,从而增加代码的可维护性和复用性。 在编写组件时,使用Vue 3的Composition API可以更好地管理组件的生命周期和状态。在组件中,可以使用`<template>`标签来定义组件的HTML布局,使用`<script>`标签来编写组件的逻辑和处理函数,使用`<style>`标签来定义组件的样式。 在编写逻辑部分时,可以使用TypeScript的类型系统来提供更好的代码提示和类型检查。可以定义接口或类型来描述组件所接收的props和数据结构,并使用泛型来约束函数的输入和输出。 在仿造京东首页时,可以使用Vue Router来实现不同页面之间的导航和路由跳转。可以使用axios或其他HTTP库来进行异步数据请求,并使用Vuex来进行全局状态管理。 最后,可以使用Vue的指令、过滤器和动画等特性来增加页面的交互效果和动画效果。可以使用京东的样式和图片资源来使页面更加逼真地仿造京东首页。 综上所述,使用Vue 3和TypeScript可以轻松地编写一个仿京东首页的页面。通过组件化开发、Composition API、TypeScript的类型系统以及Vue的特性和库的支持,我们可以快速构建出一个功能完备、交互流畅的仿京东首页页面。 ### 回答3: Vue3是一款流行的JavaScript框架,而TypeScript是一种类型安全的编程语言。结合这两者,我们可以使用Vue3和TypeScript来仿造京东首页写一个页面。 首先,我们需要创建一个Vue3项目并安装所需的依赖。在终端中运行以下命令: ``` vue create jingdong-page cd jingdong-page ``` 然后,我们可以使用Vue组件的方式来构建页面。在src目录下创建一个components文件夹,并创建一个名为Home.vue的文件。 在Home.vue中,我们可以使用Vue的模板语法和组件的概念来构建页面的结构和样式。例如,我们可以创建一个顶部导航条组件和一个商品列表组件。 ```html <template> <div> <my-header></my-header> <my-goods-list></my-goods-list> </div> </template> <script lang="ts"> import { defineComponent } from 'vue' import MyHeader from './MyHeader.vue' import MyGoodsList from './MyGoodsList.vue' export default defineComponent({ components: { MyHeader, MyGoodsList, }, }) </script> <style scoped> /* 样式 */ </style> ``` 接下来,我们可以创建MyHeader.vue和MyGoodsList.vue两个组件来实现顶部导航条和商品列表的样式和逻辑。在这些组件中,我们可以使用TypeScript的类型注解来增加代码的可靠性。 ```html <!-- MyHeader.vue --> <template> <header> <!-- 导航条内容 --> </header> </template> <script lang="ts"> import { defineComponent } from 'vue' export default defineComponent({ name: 'MyHeader', // 类型注解 props: { // 属性 }, // 方法 methods: { // 方法 }, }) </script> <style scoped> /* 样式 */ </style> ``` ```html <!-- MyGoodsList.vue --> <template> <ul> <!-- 商品列表内容 --> </ul> </template> <script lang="ts"> import { defineComponent } from 'vue' export default defineComponent({ name: 'MyGoodsList', // 类型注解 props: { // 属性 }, // 方法 methods: { // 方法 }, }) </script> <style scoped> /* 样式 */ </style> ``` 最后,在src目录下的main.ts中,我们可以导入并使用Home.vue组件来渲染页面。 ```typescript import { createApp } from 'vue' import Home from './components/Home.vue' createApp(Home).mount('#app') ``` 这样,我们就使用Vue3和TypeScript仿造了一个简单的京东首页页面。通过组件化和类型注解,我们可以更好地组织代码和管理状态,提高代码的可维护性和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值