javascript - Vue JS 非 prop 属性和禁用属性继承

标签 javascript vue.js vue-props

我已经阅读了 5 遍以上的文档,但仍然无法理解禁用属性继承的用途,也无法理解给出的示例。

我了解 Prop 的工作原理,它将数据从父组件传递到子组件。

父.vue

<template>
  <div id="app">
    <Child :num="num"></Child>
  </div>
</template>

<script>
import Child from "@/components/Child";
export default {
  name: "App",
  components: {
   Child
  },
  data() {
    return {
      num: 42
    };
  }
};
</script>

child .vue
<template>
  <div>
    <h2>Child</h2>
    <h4>num is {{num}}</h4>
    <div id="total">
      <h4>total is {{total}}</h4>
    </div>
  </div>
</template>
<script>
export default {
  name: "Child",
  props: {
    num: {
      type: Number,
      default: 100
    }
  },
  data() {
    return {

    };
  },
  computed: {
    total() {
      return this.num + 20;
    }
  }
};
</script>

这将输出 num 为 42,总数为 62。我完全理解。

但是,当涉及到禁用属性继承部分时,我假设它们指的是子组件。

“这种模式让你可以像使用原始 HTML 元素一样使用基本组件,而不必关心哪个元素实际上是它的根:”

这甚至意味着什么?这是否意味着 parent 不必再将 Prop 传递给 child , child 可以自动从其 parent 那里获取 Prop ,坦率地说这没有意义或者完全没有父组件,他们只使用子组件?

从他们的例子中, props: ['label' , 'value'] ,如果父组件没有将这些 props 传递给它们,子组件如何接收这两个 props?

如果有人可以使用上面的 parent 和 vue 组件类比来提供一个简单的例子来说明这甚至意味着什么,我将非常感激。

谢谢你。

最佳答案

如果你把一个随机的 html 属性放到组件上,它就会出现在渲染的组件上。如果禁用继承,则不会。

<my-component dorkus="whatever"></my-component>
渲染时,可能会扩展为
<div dorkus="whatever"> ... stuff ... </div>
但是如果你设置 inheritAttrs: false , 看起来像
<div> ... stuff ... </div>
这里的所有都是它的。
dorkus="whatever"仍然存储在 $attrs 对象中,如果我们想用它做其他事情。

关于javascript - Vue JS 非 prop 属性和禁用属性继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61515686/

相关文章:

typescript - Vue 3 + Vue 路由器 4 : TypeError: Cannot read properties of undefined (reading 'push' )

javascript - Vue.js : form-data Event

vuejs3 - 如何使用 computed based on props

javascript - 如何为我的幻灯片添加过渡滑动图像?

javascript - 从 url 加载图像并绘制到 HTML5 Canvas

javascript - 在现有日期上添加小时并通过 JS 获取新日期

javascript - 不能在 Vuex Mutation 中使用解构赋值

javascript - Vue 组件 prop 未定义

javascript - Vue.js。子组件中的变异 Prop 不会触发警告。想知道为什么

javascript - X 轴有多个值,条形宽度在谷歌图表中不受影响