vue3学习(七)

news2025/1/13 10:00:03

前言

        接上一篇学习笔记,今天主要是分享上次学习完了,还没来得及记录,趁今天晚上换换脑子的时间记录下。
        今天主要是记录的vuex文件的拆分,因为毕竟如果只在一个index.js文件写,文件会随着业务的复杂性上升,显得乱的很。另外简单的对了个开放接口,演示异步修改。


一、拆分后目录

在这里插入图片描述
其实主要就是store目录下index.js文件拆分state.js、actions.js、mutations.js(文件拆分)
modules目录则是按模块拆分,每个模块一个js文件。

二、vuex拆分知识点

在这里插入图片描述
在这里插入图片描述

三、拆分示例

App.vue

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <HelloWorld/>
</template>

<script setup>
import HelloWorld from './components/HelloWorld.vue'

</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

main.js

import { createApp } from 'vue'
import App from './App.vue'
import VuexStore from "./store";

const app = createApp(App)
app.use(VuexStore)
app.mount('#app')

组件HelloWorld.vue

<template>
  <div class="hello">
    <p>demo author:{{ author }}</p>
    <h1>list 数据</h1>
    <ul>
      <li v-for="item in list" :key="item.id">
        <p>{{ item.name }} | {{ item.age }} | {{ item.sex }}</p>
      </li>
    </ul>
    <p>辅助函数读取nickname:{{ nickname }}</p>
    <p>辅助函数读取localCurAge:{{ localCurAge }}</p>
    <p>修改Author:<input  @keyup="changeAuthor($event.target.value)"/></p>
    <p>辅助函数方式修改Author:<input  @keyup="setAuthor($event.target.value)"/></p>
    <p>异步修改Author:<input @change="syncChangeAuthor($event.target.value)"></p>
    <p>辅助函数方式异步修改Author:<input @change="loadUserInfo($event.target.value)"></p>
  </div>
</template>

<script>
import {mapState,mapMutations,mapActions} from "vuex";

export default {
  computed: {
    localCurAge: {
      get() {
        return 18;
      },
    },
    ...mapState(["author", "nickname", "list"]),
  },
  methods: {
    changeAuthor(value) {
      //方式一,使用commit提交
      this.$store.commit("setAuthor", value);
    },
    ...mapMutations(["setAuthor"]),
    syncChangeAuthor(value) {
      //方式二,使用dispatch提交,触发一个动作action
      this.$store.dispatch("loadUserInfo", value);
    },
    ...mapActions(["loadUserInfo"]) //映射为本地方法
  },

}

</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}

ul {
  list-style-type: none;
  padding: 0;
}

li {
  display: inline-block;
  margin: 0 10px;
}

a {
  color: #42b983;
}
</style>

store目录下
index.js

import {createStore} from 'vuex'
import state from "./state"
import mutations from "./mutations"
import actions from "./actions"


const modules = {}

const vuexStore = createStore({
    //用来存储状态数据
    state: state,
    mutations: mutations,
    actions: actions,
    modules: modules
})


export default vuexStore


actions.js

import axios from "axios";

export default {
    async loadUserInfo(context, username) {
        //第一个参数是上下文对象,第二个参数是传递过来的值,loadUserInfo是自定义的方法名,第一个对象是一个与store具有相同属性和方法的对象
        const loadUserInfoUrl = "https://gitee.com/api/v5/users/" + username;
        console.log(loadUserInfoUrl)
        const {data} = await axios.get(loadUserInfoUrl);
        console.log(data)
        //调用mutations中的方法(必须这样处理)
        context.commit('setAuthor', data.name)
    }
}

mutations.js

//用来改变状态数据,必须是同步操作
export default {
    //第一个参数是state,第二个参数是传递过来的值,setAuthor是自定义的方法名
    setAuthor(state, newValue) {
        state.author = newValue
    }
}

state.js

//定义一个对象,用来存储状态数据
export default {
    author: '韦小宝',
    nickname: '肥仔哥哥',
    list: [{
        name: 'tom',
        age: 1,
        sex: '男'
    },
        {
            name: 'jerry',
            age: 2,
            sex: '女'
        },
        {
            name: 'lili',
            age: 3,
            sex: '男'
        }]
}

四、效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

        简单的对了个开放接口,演示vuex状态管理的异步修改。


总结

  • vuex状态管理还是很强的,业务中状态管理应该会利用的比较多
  • vuex状态管理不支持API组合式,遗憾
            就记录到这里,与大家共同进步,uping!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1791395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wi-Fi 6E vs. Wi-Fi 7: Which is the Best Fit for Your Infrastructure?

Wi-Fi 6E vs. Wi-Fi 7: Which is the Best Fit for Your Infrastructure? With the rapid advancement of wireless technology, organizations face a critical decision: should they adopt Wi-Fi 6E now or wait for Wi-Fi 7? This decision impacts various aspects of …

NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload

目录 [NISACTF 2022]popchains [NISACTF 2022]level-up [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [GXYCTF 2019]BabyUpload 今日总结&#xff1a; [NISACTF 2022]popchains 审计可以构造pop链的代码 <php class Road_is_Long{public $…

2-1RT-Thread线程管理-笔记

2-1RT-Thread线程管理-笔记 其中系统线程由内核创建&#xff0c;如main函数和空闲线程都属于系统线程&#xff0c;而用户线程是由应用程序所创建的。 对于资源较大的MCU可以适当设计较大的线程栈&#xff0c;也可以在初始化时设置一个具体的数值&#xff0c;如1K或2K字节。…

CSS学习|css三种导入方式、基本选择器、层次选择器、结构伪类选择器、属性选择器、字体样式、文本样式

第一个css程序 css程序都是在style标签中书写 打开该网页&#xff0c;可以看到h1标签中的我是标题被渲染成了红色 可以在同级目录下创建一个css目录&#xff0c;专门存放css文件&#xff0c;可以和html分开编写 然后在html页面中&#xff0c;利用link标签以及css文件地址&…

王学岗鸿蒙开发(北向)——————(二)TS基本语法详解

1&#xff0c;Ts(TypeScript)语法相当于JAVAScript类型&#xff0c;鸿蒙arkTs是基于TS语言的,当然artTs也融合了其它的语言。 2&#xff0c;本篇文章是基于n9版本。注意,有些语法是已经不能用的。 3&#xff0c; 4&#xff0c;变量:用来存储数据,数字字母组成&#xff0c;数字不…

web学习笔记(六十三)

目录 1.钩子函数onActivated和onDeactivated 1.1 onActivated 1.2 onDeactivated 2. KeepAlive补充 2.1 include 和 exclude 2.2 的作用是什么? 2.3 组件包含什么prop属性及作用&#xff1f; 2.4 对应那两个生命周期&#xff1f;生命周期什么时机执行&#xff1f; 2.5 …

重庆耶非凡科技有限公司的选品师项目加盟靠谱吗?

在当今电子商务的浪潮中&#xff0c;选品师的角色愈发重要。而重庆耶非凡科技有限公司以其独特的选品师项目&#xff0c;在行业内引起了广泛关注。对于想要加盟该项目的人来说&#xff0c;项目的靠谱性无疑是首要考虑的问题。 首先&#xff0c;我们来看看耶非凡科技有限公司的背…

CGS与MGS的矩阵正交化-C语言实现

格拉姆-施密特正交化和改进的格拉姆-施密特正交化 格拉姆-施密特正交化CGS 数学公式 代码实现&#xff1a; 过程版 矩阵运算实现的难点在于每次运算都是一个向量&#xff0c;需要for循环进行&#xff0c;会带来运算时在代码中的复杂&#xff0c;进而难以理解代码的过程 Q矩阵…

17K star,一款开源免费的手机电脑无缝同屏软件

导读&#xff1a;白茶清欢无别事&#xff0c;我在等风也等你。 作为程序员&#xff0c;在我们的工作中经常需要把手机投票到电脑进行调试工作&#xff0c;选择一款功能强大的投屏软件是一件很必要的事情。今天给大家介绍一款开源且免费的投屏软件&#xff0c;极限投屏&#xff…

IEAD常用快捷键

如题 网页图片不清晰&#xff0c;可下载后查看

C++11标准-详解

目录 1、列表初始化 2、隐式类型转换 1&#xff09;概念理解 2&#xff09;举例增进理解 3&#xff09;隐式与显式区别&#xff1f; a、直接初始化 vs 拷贝初始化 b、构造函数调用 c、语义上的差异 d、性能差异 4&#xff09;explicit 关键字 5&#xff09;多参数的隐…

HarmonyOS(二十五)——Harmonyos通用事件之点击事件

组件被点击时触发的事件就是点击事件。 1.事件 名称支持冒泡功能描述onClick(event: (event?: ClickEvent) > void)否点击动作触发该回调&#xff0c;event返回值见ClickEvent对象说明。从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 2.ClickEvent对象…

C++青少年简明教程:字符类型、字符数组和字符串

C青少年简明教程&#xff1a;字符类型、字符数组和字符串 在 C 语言中&#xff0c;处理文本数据的基础是字符类型 char&#xff0c;字符数组&#xff0c;以及标凌库中的字符串类 std::string。 C中的char类型占用 1 字节的内存空间&#xff0c;用于存储单个ASCII字符。例如&a…

【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类(如何使用自定义数据集)

目录 一、前言二、工作流程回顾三、详细步骤流程1. 环境配置2. 数据准备数据集下载数据存储结构&路径查看图片 3. 数据转换4. 自定义数据集&#xff08;Custom Dataset &#xff09;4.1 方法一&#xff1a;使用ImageFolder加载数据集信息查看张量转图片创建DataLoader 4.2 …

ChatGPT-4o抢先体验

速度很快&#xff0c;结果很智能&#xff0c;支持多模态输入输出&#xff0c;感兴趣联系作者

Unity开发Cosmos使用BNG Framework获取按键信息

Unity开发Cosmos使用BNG Framework获取按键信息 1、新建一个脚本&#xff0c;复制下面代码 using BNG;[Header("Input")]//[Tooltip("The key(s) to use to toggle locomotion type")]public List<ControllerBinding> locomotionToggleInput new …

SpringBoot+Vue实现前后端分离基本的环境搭建

目录 一、Vue项目的搭建 &#xff08;1&#xff09;基于vite创建vue项目 &#xff08;2&#xff09;引入elementplus &#xff08;3&#xff09;启动后端服务&#xff0c;并测试 二、SpringBoot项目的搭建 &#xff08;1&#xff09;通过idea创建SpringBoot项目 &#x…

每天五分钟深度学习PyTorch:Tensor张量的索引和切片

本文重点 有时候当我们拥有一个Tensor张量的时候,我们可能需要获取它某一维度的信息,那么此时我们就需要索引和切片的技术,它们可以帮助我们解决这些问题。 切片操作 a是四维的,然后默认是从第一维开始取,逗号表示取不同的维度 a[:2]表示第一维取0,1,后面三维取所有 …

一、大模型推理

https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md 安装 v7.1 https://github.com/hiyouga/LLaMA-Factory/releases/tag/v0.7.1 git clone --depth 1 https://github.com/hiyoug…

门面模式Api网关(SpringCloudGateway)

1. 前言 当前通过Eureka、Nacos解决了服务注册和服务发现问题&#xff0c;使用Spring Cloud LoadBalance解决了负载均衡的需求&#xff0c;同时借助OpenFeign实现了远程调用。然而&#xff0c;现有的微服务接口都直接对外暴露&#xff0c;容易被外部访问。为保障对外服务的安全…