想象我有一个<progress-bar>
UI 组件,我想创建一个 <app-progress-bar>
与 <progress-bar>
相同的组件但进行了一些风格调整。
AppProgressBar.vue:
<template>
<progress-bar class="app-progress-bar"></progress-bar>
</template>
这会中断,因为 <progress-bar>
需要 percent
支柱。这样我就可以将其传递进去:
<progress-bar class="app-progress-bar" percent="percent"></progress-bar>
这看起来不错,但是当 <progress-bar>
时就很脆弱了有很多 Prop 。我可以简单地传递所有 Prop 吗?理论语法:
<progress-bar class="app-progress-bar" {...props}></progress-bar>
这与 React/JSX 类似。
最佳答案
就像已经回答的那样,扩展组件将是在这种情况下创建组件的好方法。类似于其他语言中的类继承。
但是,您也可以将对象作为 prop 传递。如果你想保持干净,并且不想扩展你的组件,你可以传递这样的 prop:
//object with many values that you need to pass. for ex.
myObjectWithSuff: { percent: 10%, someOtherStuff: value, ... }
<progress-bar class="app-progress-bar" myProp="myObjectWithStuff"></progress-bar>
在 progress-bar
组件内,声明 prop myProp
。然后您可以访问该对象的任何属性。例如:this.myProp.percent
。
这既快速又简单,但根据您的架构,扩展组件可能是可行的方法。
关于javascript - 在Vue中,我可以传输 Prop 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515763/