vue.js - 请帮我理解 Vue 中 props 的使用
问题描述
在过去的 3 天里,我一直在研究 vue.js,使用 vue cli 3 测试项目。
我有一些面向对象编程的经验,但并不多。尽管如此,vue 的“通用”方法对我来说似乎很熟悉,这与我在 OOP 中已经看到的做法相呼应。
尽管如此,还是有很多事情让我难以置信,其中之一就是道具。
我已经筛选了几个教程,包括视频和书面形式。这是我最近读过的一篇很短的文章,它说明了我认为它很短而且很好的情况:https ://reactgo.com/vuejs-props-tutorial/
所以,据我了解,如果我们在 OOP 中,我会认为道具是建立在我认为是父母的地方。在上面的教程中,作者在声明 props 的地方创建了 button.vue,然后导出到 post.vue。在我看来,这使得 button.vue 成为 post.vue 的父级,因为 post.vue 继承自 button.vue。但是,在通用编程或至少在 vue 中,反之亦然 Oo ALL 教程现在(将)调用 post.vue 父级,因为它指定了道具的数据,例如通过 html。
Post.vue
<template>
<div>
<h1>My first post</h1>
<p>This a big post helps us to learn vue props</p>
<my-button name="Share"></my-button>
<my-button name="Like"></my-button>
<my-button name="Comment"></my-button>
</div>
</template>
<script>
import Button from './Button.vue'
export default{
components:{
'my-button':Button
}
}
</script>
当涉及到更复杂的组件时,这真的让我大吃一惊,其中一个视图(使用术语“使用路由的项目”)由一个组件组成,该组件是通过一个相互构建的多个组件链制造的。像这样:MyView->listBuilder->listData1
我真的很难理解 vue 的技术方面是如何工作的。我不妨把它当作一个给定的,但我很确定不久我就会遇到问题,因为构建在组件上的组件(等等)试图解决根本不存在的属性,因为组件相互继承的顺序都是杂乱无章的。
在彼此之上构建长的组件链可能不是一个好主意,但是在某些时候可能需要这样做,然后我想对 vue 处理这个问题的方式有一个很好的理解。
此外,我真的很想知道这种方法在 vue/泛型编程中的优势。它让我想起了 OOP 中的接口,因为我可以在子组件中指定父组件必须使用的内容。
解决方案
就像已经提到的 artoju 一样,不要严格应用 OOP 思维方式。
在您的示例中,我没有看到任何数据定义或道具定义。
您的视图组件“post.vue”是根/父级,在那里您正在导入您的按钮组件,因此它是“post.vue”的子级。没什么好想的。
也许这个链接可以帮助你更多:https ://forum.vuejs.org/t/how-can-i-make-oop-user-interfaces/10512/7
推荐阅读
- c++ - 英特尔 C++ 无法在 mac osx 上打开“wchar.h”
- memory - FSB、RAM MHz、MT/s、内存分频器 1:1、Core2Duo
- excel - Powershell 错误:来自 HRESULT 的异常:0x800A03EC
- apache-spark - 如何加速 Spark (Pyspark) 中的缓存?
- c - C初学者问题:数组不打印
- excel - 防止 EventChange Sub 意外运行
- r - 如何根据其他数据框上的多个条件创建列
- kubernetes - Kubernetes Operator CSV 停滞不前
- ruby-on-rails - 如何调试 rails db:structure:dump?
- elasticsearch - 如何使用nest 7在索引映射中定义自定义过滤器