vue.js - 具有 Nuxtjs 属性或方法的 VueJS 未在实例上定义,但在渲染期间被引用
问题描述
我对 VueJS 比较陌生,我想知道这里发生了什么。下面是我遵循本教程使用 Nuxtjs Firebase 进行服务器端渲染的代码。但是当我这样做时它会输出以下错误firebase serve
。谁能向我解释这里有什么问题?
<template>
<ul>
<li v-for="fact in facts" :key="fact.text">
{{ fact.text }}
</li>
</ul>
</template>
<script>
import fetch from 'isomorphic-fetch';
export default {
async asyncData() {
const response = await fetch('https://nuxt-ssr.firebaseio.com/facts.json');
const facts = await response.json();
return facts;
}
}
</script>
错误:[Vue 警告]:属性或方法“事实”未在实例上定义,但在渲染期间被引用。通过初始化属性,确保此属性是反应性的,无论是在数据选项中,还是对于基于类的组件。
解决方案
在 asyncData 方法的末尾,您的事实是一个数组。在 asyncData 中(就像在普通的 vue 数据函数中一样)你需要返回字典。
所以应该如下:
export default {
async asyncData() {
const response = await fetch('https://nuxt-ssr.firebaseio.com/facts.json');
const facts = await response.json();
return {facts}; // Same as return { facts: facts }
}
}
推荐阅读
- ansible - 如何调整角色依赖的ansible角色依赖中的变量?
- android - react native svg onpress 不适用于具有大 viewBox 的 android
- sql - 在 SQL Server 中创建数据透视表,如下例所示
- gitlab - 如何在 Gitlab 中按名称搜索所有组存储库中的文件
- java - Android Java底部导航栏片段未显示
- f# - 创建一个对第一个解析器的缩进敏感的 sepBy 解析器组合器
- swift - 如何将多行文本添加到 UIButton 并相应调整其高度?
- java - 整数数组集合的基准排序算法
- c++ - 为什么我无法从 USB 控制器获得任何原始输入?
- oracle - 当值是逗号分隔的字符串时,如何在 Oracle 查询中进行透视?