Yêu cầu thg 9 23, 2022 1:01 CH 146 0 1
  • 146 0 1
+1

Hỏi về Pinia VueJS

Chia sẻ
  • 146 0 1

Em có lưu user info vào trong store của Pinia dạng Object

Nhưng dùng console.log thì dữ liệu trả về là dạng Proxy (không thấy data ở đâu)

Mong mọi người chỉ cho em cách lấy data ra dùng với ạ Em xin cảm ơn.

console.log("currentUser: ",  store.auth.currentUser);

image.png image.png

1 CÂU TRẢ LỜI


Đã trả lời thg 9 23, 2022 6:07 CH
Đã được chấp nhận
0

Bạn thử cái này xem được không

console.log("currentUser: ",  store.auth.state.currentUser);
Chia sẻ
Avatar Hoang Bich @bichht-0889
thg 9 24, 2022 2:43 SA

Không được nha bạn, này không phải là do mình trở sai tới currentUser mà nó tự động được bọc Proxy

Avatar Quân Troy @minhquan-sun
thg 9 24, 2022 3:07 CH

@bichht-0889 nếu bạn muốn chuyển Proxy thành Object thì có thể dùng hàm toRaw() để xem data của bạn dạng Object. Tuy nhiên, nếu muốn lấy data từ store để dùng thì dùng getters . Bạn có thể đọc thêm cách dùng Getters tại đây

Avatar Hoang Bich @bichht-0889
thg 9 24, 2022 3:14 CH

@minhquan-sun Mình dùng toRaw và getters rồi, nhưng đều không lấy được

Avatar Quân Troy @minhquan-sun
thg 9 24, 2022 3:16 CH

@bichht-0889 bạn đẩy code lên https://codesandbox.io / hoặc Github để mình xem thử nhé

Avatar Quân Troy @minhquan-sun
thg 9 24, 2022 8:06 CH

@bichht-0889 mình thấy chỉ cần return data muốn dùng là được nhé. image.png!image.png

Avatar Hoang Bich @bichht-0889
thg 9 25, 2022 3:23 SA

@minhquan-sun Mình đang hỏi làm sao để lúc in ra console để nó hiện data như bình thường á bạn

Avatar Hoang Bich @bichht-0889
thg 9 25, 2022 3:24 SA

@bichht-0889 Giờ in ra nó hiện proxy, với những data khác cũng thế, nên mình khó debug

Avatar Quân Troy @minhquan-sun
thg 9 25, 2022 11:24 SA

@bichht-0889 Trông ko clear lắm nhưng nó hoạt động được theo ý bạn

import { toRaw } from "vue";

export default defineComponent({
  setup() {
    const store = useStore();
    store.auth.actGetCurrentUserInfo()
    const currentUser = computed(() => store.auth.currentUser);
    console.log("getCurrentUser: ", store.auth.getCurrentUser)
    console.log("currentUser: ", currentUser)
    console.log("state currentUser: ", store.auth.currentUser)

    console.log('toRawNow : ', toRaw(currentUser.value));
    setTimeout(() => {
      console.log('toRaw : ', toRaw(currentUser.value));
    }, 1000);
    return { currentUser };
  }
})
Avatar Hoang Bich @bichht-0889
thg 9 25, 2022 12:20 CH

@minhquan-sun Cảm ơn bạn nhé, mình cần như này đây.

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí