vuejs / pinia

🍍 Intuitive, type safe, light and flexible Store for Vue using the composition api with DevTools support

Home Page:https://pinia.vuejs.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"pinia": "^2.1.7", has bug,click button more time, the arr disaplay wrong.

sikerxu opened this issue · comments

Reproduction

this.arr.length in store index , one time right, more time wrong

Steps to reproduce the bug

import { defineStore } from "pinia";

export const useMainStore = defineStore('main',{

state:()=>{
return {
count:100,
foo:'foo',
arr:[1,2,3],
}
},

// 类似于组件的 computed,用来封装计算属性,有缓存的功能
getters:{

},

// 类似组件的 methods 封装业务逻辑,修改state
actions:{
gai(num){
this.count+=num;
this.foo=this.foo + num;
this.arr.push(this.arr.length + num); // 有 BUG
}
}
})

App.vue

{{ mainStore.arr }}
{{ foo }}
{{count }}
<button @click="patch_action">通过action改</button>
<script setup> import {useMainStore} from './store'; import {storeToRefs} from 'pinia'; const mainStore = useMainStore(); // 解构使用,并使用 storeToRefs 让其变成响应式 const {count,foo}= storeToRefs(mainStore); // 修改数据方式4:通过定义在 Store 中的 action 函数修改 function patch_action(){ mainStore.gai(5); } </script>

Expected behavior


click the button 3 times, result is [ 1, 2, 3, 8, 9, 10, 11, 12 ]

Actual behavior


click the button 3 times, result is [ 1, 2, 3, 8, 9, 10, 11, 12 ]

Additional information

No response

Open a properly formatted markdown discussion in the help section and you will likely receive help 🙂