Vuex组件传参时的类型问题

Vuex类型问题解析
本文介绍了在使用Vuex进行组件间通信时遇到的一个常见问题:由于类型不匹配导致的数据获取失败。作者通过一个具体的示例解释了如何识别并解决这个问题。

Vuex组件传参时的类型问题


这是个很白痴的问题,但是确实花了我1个多小时才解决

问题背景

<transition name="slide-left" mode="out-in">
   <categoryList v-if="flag"
                 :search="search"
                 @selectCategory="selectCategory">
   </categoryList>
   <dishList v-else
             :search="search"
             :selectedID="selectedID"
             @closeDishList="closeDishList">
   </dishList>
 </transition>

categoryList是类别的列表
dishList是菜品的列表
我想选中一个类别之后显示该类别下的菜品列表
这就需要把从categoryList中选中的categoryID传入dishList

传入后再通过this.$store获取相应数据

// this.selectedID就是上面所说的categoryID
dishList () {
    var temp = []
    this.$store.state.dish.relationMap.get(this.selectedID).forEach(e => {
        temp.push(this.$store.state.dish.dishMap.get(e))
    })
    return temp
}

我的relationMap是Map(int, Set([int,int,int…]))
问题来了,this.$store.state.dish.relationMap.get(this.selectedID)返回的居然是undefined

解决方法

解决的过程很曲折,怀疑了很多可能性,最后发现居然是类型问题
categoryID是从categoryListemit出来的,emit的参数是<div>idid是一个string,所以实际上我返回的是string而不是int

showDishList (event) {
    // 这里的id是<div>的id
    this.$emit('selectCategory', event.currentTarget.id)
}

所以把获取数据的代码改成下面这样就行

// this.selectedID就是上面所说的categoryID
dishList () {
    var temp = []
    this.$store.state.dish.relationMap.get(parseInt(this.selectedID)).forEach(e => {
        temp.push(this.$store.state.dish.dishMap.get(e))
    })
    return temp
}
### 银河麒麟 V10 终端使用指南及常见问题解决方案 银河麒麟操作系统 V10 是一款基于 Linux 的国产化操作系统,其终端作为核心工具之一,在日常运维管理和开发工作中扮演着重要角色。以下是针对该系统终端使用的详细介绍以及一些常见的问题及其解决方案。 #### 一、银河麒麟 V10 终端基础功能 银河麒麟 V10 提供了一个强大的命令行界面 (CLI),支持多种 Shell 环境,默认情况下采用的是 Bash Shell[^1]。通过此终端可以执行各种系统管理任务,例如文件操作、服务启动与停止、网络配置等。 #### 二、常用命令汇总 为了更好地利用银河麒麟 V10 的终端环境,掌握以下几个常用的 Linux 命令是非常必要的: - **查看当前目录下的文件列表** ```bash ls -l ``` - **切换工作目录** ```bash cd /path/to/directory ``` - **编辑文本文件** 可以使用 `nano` 或者 `vim` 编辑器来修改配置文件或其他文档。 ```bash nano filename.txt vim filename.txt ``` - **更新软件包索引并升级已安装程序** 对于 Debian 类型发行版(如银河麒麟),可运行以下命令完成系统的更新: ```bash sudo apt update && sudo apt upgrade -y ``` #### 三、IP 地址设置与 DNS 配置 如果需要更改服务器的 IP 地址或者添加自定义 DNS 服务器地址,则可以通过如下方法实现[^2]: - 修改网卡静态 IP 设置: 找到对应的接口配置文件通常位于 `/etc/network/interfaces` 中,并按照需求调整参数; - 添加新的 DNS 条目至解析顺序表里去: 编辑 `/etc/resolv.conf` 文件加入类似下面的内容即可生效: ```plaintext nameserver 8.8.8.8 nameserver 114.114.114.114 ``` #### 四、高级应用场景——FFmpeg 和 Node.js 安装部署 对于多媒体处理场景来说,可能需要用到 FFmpeg 工具;而在前端开发领域则离不开 JavaScript 运行时环境的支持。这里分别给出它们在银河麒麟上的具体实施步骤[^3][^4]: ##### (1)编译安装 FFmpeg 假设已经准备好源码压缩包后将其解压放置指定位置再继续后续流程: ```bash tar zxvf ffmpeg*.tar.gz -C /usr/local/ffmpeg/ cd /usr/local/ffmpeg/ffmpeg-source-code-folder/ ./configure --prefix=/usr/local/ffmpeg --enable-shared ... make -j$(nproc) sudo make install ``` ##### (2)Node.js 下载与 ElectronJS 开发准备 先确认目标机器满足最低硬件规格要求之后再去官网获取最新稳定版本链接下载下来解压出来就能用了: ```bash wget https://nodejs.org/dist/v14.15.1/node-v14.15.1-linux-x64.tar.xz tar xf node-v14.15.1-linux-x64.tar.xz -C ~/software/ export PATH=~/software/node-v14.15.1-linux-x64/bin:$PATH npm init electron-app . npm install electron@latest --save-dev ``` 需要注意的是当尝试构建 ARM 架构的应用程序包可能会遭遇性能瓶颈甚至崩溃的情况建议考虑交叉编译的方式绕过障碍点比如借助 Fedora 平台辅助完成整个过程从而获得更优的结果质量。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值