亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

當(dāng)物件變更時,觀察 pinia 中的狀態(tài)物件不會觸發(fā)
P粉002546490
P粉002546490 2023-08-28 12:14:33
0
1
720
<p>我的 pinia 狀態(tài)中有一個深層物體,我想在其中放置一個觀察者。 </p> <pre class="brush:js;toolbar:false;">export const useProductStore = defineStore("product", { state: () => ({ attributes: {}, }), }); </pre> <p>當(dāng)物件內(nèi)部有資料時,它看起來像這樣:</p> <pre class="brush:json;toolbar:false;">attributes: { english: { 0: { key: "key1", value: "value1" }, 1: { key: "key2", value: "value2" }, … } } </pre> <p>我試圖在這個物件上放置一個觀察器,但是當(dāng)值發(fā)生變化時,觀察器不會觸發(fā)。這是我嘗試在其中執(zhí)行此操作的組件:</p> <pre class="brush:js;toolbar:false;"><script setup> import { useProductStore } from "@/stores/ProductStore"; import { storeToRefs } from "pinia"; const productStore = useProductStore(); const { attributes } = storeToRefs(productStore); watch(() => ({...attributes}), (newValue, oldValue) => { console.log(oldValue); console.log(newValue); }, { deep: true }); </script> </pre> <p>這直接來自 pinia 文檔,但是當(dāng)我更改狀態(tài)時,什麼也沒有發(fā)生。使用 vue 開發(fā)工具,我可以看到狀態(tài)物件正在更改,所以我知道它是反應(yīng)性的。我錯過了什麼? </p>
P粉002546490
P粉002546490

全部回覆(1)
P粉668113768

storeToRefs 產(chǎn)生 ref()代碼>s.

您說這個範(fàn)例“直接來自 pinia 文件”,但我懷疑您是否發(fā)現(xiàn)在 pinia 文件中的任何地方傳播 ref 。如果您這樣做了,那麼這是一個錯誤,應(yīng)該透過在 pinia 的儲存庫上提出問題來向 posva 指出。

可以直接觀看參考:

watch(
  attributes,
  handler, 
  { deep: true }
)

...或您可以使用箭頭函數(shù)查看其.value1

watch(
  () => attributes.value,
  handler,
  { deep: true }
)

注意 newValoldVal 參數(shù)是 代理 2。若要存取其目標(biāo),請使用 toRaw。

工作演示。 p>


1 - 它允許更窄的觀察者,例如:

watch(
  () => attributes.value[0]?.value),
  handler
)

2 - 如果將物件放入ref() 「該物件是與reactive( )" 進(jìn)行深度反應(yīng)(請參閱詳細(xì)資訊)。另請閱讀反應(yīng)式代理與原始代理 .

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板