+
+ Current Count: {{ counter.count }}
+
+更真实的示例
+这是一个更完整的 Pinia API 示例,在 JavaScript 中也使用了类型提示。对于某些开发者来说,可能足以在不进一步阅读的情况下直接开始阅读本节内容,但我们仍然建议你先继续阅读文档的其余部分,甚至跳过此示例,在阅读完所有核心概念之后再回来。
+
+js
+import { defineStore } from 'pinia'
+
+export const useTodos = defineStore('todos', {
+ state: () => ({
+ /** @type {{ text: string, id: number, isFinished: boolean }[]} */
+ todos: [],
+ /** @type {'all' | 'finished' | 'unfinished'} */
+ filter: 'all',
+ // 类型将自动推断为 number
+ nextId: 0,
+ }),
+ getters: {
+ finishedTodos(state) {
+ // 自动补全! ✨
+ return state.todos.filter((todo) => todo.isFinished)
+ },
+ unfinishedTodos(state) {
+ return state.todos.filter((todo) => !todo.isFinished)
+ },
+ /**
+ * @returns {{ text: string, id: number, isFinished: boolean }[]}
+ */
+ filteredTodos(state) {
+ if (this.filter === 'finished') {
+ // 调用其他带有自动补全的 getters ✨
+ return this.finishedTodos
+ } else if (this.filter === 'unfinished') {
+ return this.unfinishedTodos
+ }
+ return this.todos
+ },
+ },
+ actions: {
+ // 接受任何数量的参数,返回一个 Promise 或不返回
+ addTodo(text) {
+ // 你可以直接变更该状态
+ this.todos.push({ text, id: this.nextId++, isFinished: false })
+ },
+ },
+})
\ No newline at end of file
--
Gitee
From b27958a1a115925c4aa18e5b30e3b10e37c96d27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=94=90=E5=A4=A9=E5=A8=A5?= <3517601051@qq,com>
Date: Sun, 19 May 2024 21:22:55 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../20240516-\345\244\215\344\271\240.md" | 146 ++++++++++++++++++
1 file changed, 146 insertions(+)
create mode 100644 "\345\224\220\345\244\251\345\250\245/20240516-\345\244\215\344\271\240.md"
diff --git "a/\345\224\220\345\244\251\345\250\245/20240516-\345\244\215\344\271\240.md" "b/\345\224\220\345\244\251\345\250\245/20240516-\345\244\215\344\271\240.md"
new file mode 100644
index 0000000..8ab6db9
--- /dev/null
+++ "b/\345\224\220\345\244\251\345\250\245/20240516-\345\244\215\344\271\240.md"
@@ -0,0 +1,146 @@
+## 复习代码
+```js
+
+
+