Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vue.js“;TypeError:无法读取属性';路径';“未定义”的定义;_Vue.js - Fatal编程技术网

vue.js“;TypeError:无法读取属性';路径';“未定义”的定义;

vue.js“;TypeError:无法读取属性';路径';“未定义”的定义;,vue.js,Vue.js,我知道这是一个常见的问题,但是我已经检查了我的文件很多次了,却找不到错误所在。 当我尝试在导航菜单中路由到我的组件时,我遇到此错误 My app.vue文件: <template> <div id="app"> <Navbar :nav-links="navLinks" /> <router-view/> </div> </template> <script>

我知道这是一个常见的问题,但是我已经检查了我的文件很多次了,却找不到错误所在。 当我尝试在导航菜单中路由到我的组件时,我遇到此错误

My app.vue文件:

    <template>
  <div id="app">
    <Navbar 
      :nav-links="navLinks"
    />
    <router-view/>
  </div>
</template>

<script>
import Navbar from '@/components/Navbar'
export default {
  components: {
    Navbar
  },
  data: () => ({
    navLinks: [
      {
        text: 'Home',
        path: '/home'
      },
      {
        text: 'About',
        path: '/about'
      },
      {
        text: 'Contact',
        path: '/contact'
      }
    ]
  })
}
</script>

从“@/components/Navbar”导入Navbar
导出默认值{
组成部分:{
导航栏
},
数据:()=>({
导航链接:[
{
文本:“主页”,
路径:'/home'
},
{
文本:“关于”,
路径:'/about'
},
{
文本:“联系人”,
路径:'/contact'
}
]
})
}
我的导航栏组件(这是发生错误的地方)


  • {{link.text}
导出默认值{ 道具:['navLinks'], 数据(){ 返回{ 悬停:错, } } }

如何修复此问题?

导航栏组件中的一个道具名为导航链接,但您可以在外部以导航链接的形式访问它。 这应该起作用:

:navLinks="navLinks"
v-for与{}的语法不正确。使用()

li v-for="(link, index) in navLinks

导航栏组件中的道具名为navLinks,但您可以在外部以nav links访问它。 这应该起作用:

:navLinks="navLinks"
v-for与{}的语法不正确。使用()

li v-for="(link, index) in navLinks

另一个不相关的注释:
hover
属性当前正在所有导航链接中共享。如果您希望它以某种方式与当前悬停的元素相关,那么您必须单独保存它(可能在navLink内部)


至于
:nav links=“navLinks”
,您所做的不仅是完全合法的,而且是推荐的做法(根据HTML规范)。使用
:navLinks=“navLinks”
依赖于Vue的HTML解析器,该解析器在幕后将其转换为
nav links
——检查HTML元素,您会注意到它)

如果你想了解细节,你可以看看这个主题。结果是:使用其中一个,但是如果使用
camelCase
,它将与呈现的标记不一致。如果您使用
kebab case
,它将与呈现的标记一致,因此您在编写测试时不必处理这种差异,例如,您是否需要根据元素的属性选择元素(jest将
camelCase
转换为
lowercase
——因此它与呈现的标记不一致,因此测试根据是使用
mount
还是
shallowMount
开始通过/失败。不用说,这不是一个好的测试设置。)

使用
的讨论也完全相同。虽然两者都有效,但如果需要选择存根子组件,则在编写测试时需要解决使用first的问题

此外,(您的操作方式)是以下vue linting预设的一部分:

  • 插件:vue/强烈推荐
  • 插件:建议使用vue/vue3
  • 插件:vue/推荐

另一个不相关的注意事项:
hover
属性当前正在所有navLink中共享。如果您希望它以某种方式与当前悬停的元素相关,则必须单独保存(可能在navLink内部)


至于
:nav links=“navLinks”
,您所做的不仅是完全合法的,而且是推荐的做法(根据HTML规范)。使用
:navLinks=“navLinks”
依赖于Vue的HTML解析器,该解析器在幕后将其转换为
nav links
——检查HTML元素,您会注意到它)

如果你想了解细节,你可以看看这个主题。结果是:使用其中一个,但是如果使用
camelCase
,它将与呈现的标记不一致。如果您使用
kebab case
,它将与呈现的标记一致,因此您在编写测试时不必处理这种差异,例如,您是否需要根据元素的属性选择元素(jest将
camelCase
转换为
lowercase
——因此它与呈现的标记不一致,因此测试根据是使用
mount
还是
shallowMount
开始通过/失败。不用说,这不是一个好的测试设置。)

使用
的讨论也完全相同。虽然两者都有效,但如果需要选择存根子组件,则在编写测试时需要解决使用first的问题

此外,(您的操作方式)是以下vue linting预设的一部分:

  • 插件:vue/强烈推荐
  • 插件:建议使用vue/vue3
  • 插件:vue/推荐

    • 您在这里犯了两个错误。
      一个是:

       <template>
         <div id="app">
          <Navbar 
           :nav-links="navLinks"
          />
         <router-view/>
        </div>
      
      
      

      在这里,您使用不同的名称绑定
      (导航链接)
      ,您应该保持绑定数据时使用的名称与道具
      (导航链接)
      中的名称相同。 两个名字应该相同

      第二个:

      v-for=“{link,index}在导航链接中”

      语法错误,正确的语法应该是


      v-for=“(链接,索引)在导航链接中”

      您在这里犯了两个错误。
      一个是:

       <template>
         <div id="app">
          <Navbar 
           :nav-links="navLinks"
          />
         <router-view/>
        </div>
      
      
      

      在这里,您使用不同的名称绑定
      (导航链接)
      ,您应该保持绑定数据时使用的名称与道具
      (导航链接)
      中的名称相同。 两个名字应该相同

      第二个:

      v-for=“{link,index}在导航链接中”

      语法错误,正确的语法应该是
       <template>
         <div id="app">
          <Navbar 
           :nav-links="navLinks"
          />
         <router-view/>
        </div>