iT邦幫忙

0

【已解決】vue fetch的資料傳給孫元件變成空陣列

  • 分享至 

  • xImage

大家好,我是還在學習vue的新手

現在用firebase練習fetch遇到一個問題,get過程很順利,也正確接收到需要的資料。
可是當我把fetch來的陣列透過provide傳出去的時候,卻顯示裏頭是空的。造成孫元件接收到空陣列。

改成讀取存在data的資料就完全沒這個問題,想請問是什麼原因造成的?

https://ithelp.ithome.com.tw/upload/images/20221011/20153776hTpEvF4qDV.png

<script>
export default {
    data() {
        return {
            gamedata: []
        }
    },
    methods: {
        loadGameData() {
           fetch('https://vue-http-demo-b94q7-default-rtdb.firebaseio.com/gamelist.json') 
           .then((response) => {
            if(response.ok){
                return response.json()
            }
           })
           .then((data) => {
            const gamedata = []
            for(const id in data){
                gamedata.push({
                    id: id,
                    name: data[id].name,
                    cover: data[id].cover
                })
            }
            this.gamedata = gamedata
           })
           .catch((error) => {
            console.log(error)
           })
        }
    },
    provide() {
        return {
            gamedata: this.gamedata
        }
    },
    created() {
        this.loadGameData()
    }
}
</script>
看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-10-11 23:56:14 檢舉
https://vuejs.org/guide/components/provide-inject.html#working-with-reactivity

gamedata: computed(() => this.gamedata)
milanor39 iT邦新手 5 級 ‧ 2022-10-12 09:59:26 檢舉
你好,改成gamedata: computed(() => this.gamedata)後,出現了computed未定義的錯誤。於是又加上import { computed } from 'vue',結果畫面就死掉一片空白了
froce iT邦大師 1 級 ‧ 2022-10-12 10:29:44 檢舉
你如果是用vue 3.3之前的版本,要去看下面的注意事項。

The above usage requires setting app.config.unwrapInjectedRef = true to make injections automatically unwrap computed refs. This will become the default behavior in Vue 3.3 and this config is introduced temporarily to avoid breakage. It will no longer be required after 3.3.

我到3之後就用 composition api 了,所以沒實際遇到這問題過,我也沒範例給你看。
milanor39 iT邦新手 5 級 ‧ 2022-10-12 11:43:07 檢舉
查看後發現版號是3.2.40,經過修改已經能正常運作。非常感謝您的回答~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答