返回介绍

创建 Store

发布于 2024-09-11 01:11:55 字数 1331 浏览 0 评论 0 收藏 0

在 src/renderer/store 目录下新建 index.ts,创建第一个 Store 程序,代码如下:

import { defineStore } from 'pinia';
import { Ref, ref } from 'vue';
import { ModelChat } from '../../model/ModelChat';

// mock data
const prepareData = () => {
  let result = [];
  for (let i = 0; i < 10; i++) {
    let model = new ModelChat();
    model.fromName = '聊天对象' + i;
    model.sendTime = '昨天';
    model.lastMsg = '这是此会话的最后一条消息' + i;
    model.avatar = 'https://pic3.zhimg.com/v2-306cd8f07a20cba46873209739c6395d_im.jpg?source=32738c0c';
    result.push(model);
  }
  return result;
};

export const useChatStore = defineStore('chat', () => {
  let data: Ref<ModelChat[]> = ref(prepareData());
  const selectItem = (item: ModelChat) => {
    if (item.isSelected) return;
    data.value.forEach((v) => (v.isSelected = false));
    item.isSelected = true;
  };
  return { data, selectItem };
});

通过 export 暴露 useChatStore 方法,这个方法通过 Pinia 的 defineStore 方法创建,在 Vue 业务组件中执行这个函数实例才会得到真正的 Store。

使用 defineStore(name, callback) 的形式创建 Store,这种形式的 Store 叫作 Setup Stores。Pinia 还提供了另一种形式的 Store :Option Stores,具体可以参阅 Pinia 的官方文档。

这个 Store 的状态数据存储在:data 属性中,这是一个被 Ref 对象包裹着的数组,数组里的内容是通过 prepareData 方法模拟的(模拟了十个聊天会话对象)。

这个 Store 还提供了一个 actions 方法:selectItem,这个方法用于选中某个具体的聊天会话。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文