javascript - vue中的v-bind是什么

标签 javascript vue.js

我开始使用 Vue 并按照 Traversy Media on Youtube 的视频教程进行操作

他在那里使用了 v-bind 但我没有正确解释它们是什么(或者至少我无法理解)

出于某种原因,我仍然觉得文档有点难以理解。

这就是我们正在做的事情。

<template>
  <div id="app">
    <p>{{msg}}</p>
    <Todos v-bind:todos="todos" />
  </div>
</template>

<script>
import Todos from "./components/todo.vue";
let todo = [
  {
    name: "Rohit",
    title: "Full Stack Developer"
  },
  {
    name: "Varun",
    title: "head of marketing"
  },
];

export default {
  name: "app",
  components: {
    HelloWorld,
    Todos
  },
  data() {
    return {
      msg: "hello",
      todos: todo
    };
  }
};
</script>

问题:1有人能理解这段代码吗

 <Todos v-bind:todos="todos" />

比如什么是 v-bind 以及为什么我们要保持 todos 的值等于字符串? (我知道最终他是将待办事项作为 Prop 传递给子组件)

然后在todo.vue中,他在做这样的事情

<template>
  <div v-bind:key="todo.id" v-for="todo in todos">
      <h3>{{todo.title}}</h3>
 </div>
</template>

<script>
export default {
  name: "Todos",
  props: ["todos"] 
};
</script>

问题 2 这就是让我感到害怕的地方。开始, 在 export default 中,他为什么要在 props 中使用数组? Prop :[“todos”]?从他们传递字符串的样板代码中,他们只是做了类似这样的事情 props: {msg: String} 所以为什么 props: ["todos"] 在这里? p>

export default {
  name: "HelloWorld",
  props: {
    //We are defining the message type here
    msg: String
  }
};

问题 3:最后一行就在这里

 <div v-bind:key="todo.id" v-for="todo in todos">
      <h3>{{todo.title}}</h3>

我理解这样做背后的原因 v-bind:key="todo.id" 但话又说回来什么是 v-bind?我们在哪里使用它?

最佳答案

第一季度

在 Vue 中,您可以将 props 传递给子组件。如果你会使用:todos="todos"todos prop 将等于字符串 todos 但是使用 v-bind:todos 或简而言之 :todos 它使 prop 成为 javascript 变量 todos。这是 data 函数中的 todos

第二季度

在 vue 中,您可以通过不同的方式引用 Prop 。在数组中声明它们只是更短,但有一个缺点,即您无法验证 Prop 。在对象中声明 Prop 时,您可以指定 Prop 的类型,例如。字符串、数组、对象等。也可以声明默认和指定所需的 Prop 。

props: {
   msg: {
     type: String,
     required: true,
     default: ''
   }
}

第三季度

提供的示例将不起作用,因为 let todo 中没有 id,只有 nametitle。那么什么是可行的:

<div v-bind:key="i" v-for="(todo, i) in todos">

同样可以只使用:key="i"。 key 可以看作是 id。它被用来让 Vue 知道循环中的哪个元素。

关于javascript - vue中的v-bind是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604990/

相关文章:

javascript - 无法删除子节点而不使子节点(消息)根本不显示

javascript - 使用jquery或js检测JPG CMYK图像客户端

javascript - Vuex 存储未定义

javascript - vue.js 使用 $options 在过滤器中传递参数

c# - 将 QueryString 参数添加到 GridView ItemTemplate

javascript - jQuery .click() 不适用于 setInterval

javascript - 尽管数据放置, Bootstrap 始终位于顶部

rest - 使用 JWT 在 Vue 中进行基于角色的身份验证

node.js - 在 Vue.js 中找不到这些依赖项错误

javascript - (Nuxt.js/Vue.js) 在 Vuex 商店中设置 axios 身份验证 token 在刷新后重置