我目前正在使用Nuxt.js来构建我的Vue应用程序.是否有可能将Nuxt用作Vue Cli 3项目的一部分,以便我可以从中受益?我找不到他们官方文档的说明.
我是Vue的新手,无法找到使用Vue.js实现类似React的“包装器”组件的方法,例如,datagrid使用第3方some-table组件和一个pagination组件的可重用组件。直观地,datagrid将提供两个组件都需要的数据/道具/事件并控制它们之间的通信。在React中,这可以像
// inside <Datagrid />
<Table {...someProps} />
<Pagination {...otherProps} />
Run Code Online (Sandbox Code Playgroud)
使用Vue,似乎类似下面的内容只能传递props给子组件
// inside Datagrid.vue
<some-table v-bind="$props"></some-table>
Run Code Online (Sandbox Code Playgroud)
我不确定是否slots有帮助。我一直在努力的这个包装器组件将props/events/slots其所有子组件所需的东西传递给他们,以便我可以利用其子组件(可能是某些第三方组件)提供的所有功能。而且,它也可能负责其子节点之间的数据交换之类的事情。虽然datagrid可能是一个插槽的包装,但如果双方table和pagination要求相同的data,我认为应该驻留在道具datagrid。如何将此传递data到插槽?
// Datagrid.vue
<template>
<div>
<slot name="table"></slot>
<slot name="pagination"></slot>
</div>
</template>
<script>
export default {
name: 'Datagrid',
data() {
return {
data: 'How to share it with table and pagination',
}
},
}
</script>
Run Code Online (Sandbox Code Playgroud)
我可以找出的一些解决方案: …
我有几个 Vue 组件传递了一些对象文字作为道具,例如
<child :prop1="{ foo: 'bar' }"></child>
Run Code Online (Sandbox Code Playgroud)
但是,当父组件重新渲染时,如下面的最小代码和框示例所示,prop1更改(由观察者检测)并导致Child更新。如果 prop 是一个对象引用,它保持不变。
为什么会发生这种情况,这是否意味着使用对象字面量(可能还有数组字面量)作为道具可能不“安全”?