在下面的代码中,我将一个对象传递给子组件。 Vue为此对象中的每个属性创建一对setter / getter。换句话说,它绑定每个属性以使组件具有反应性。有没有办法传递一个对象,就像我在这里做的那样,但没有绑定?在现实生活中,我传递一个具有十个属性的对象,并为每个对象创建一个setter / getter对。这会影响性能。你会推荐什么?
Vue.component('child', {
template: '<div>Child!</div>',
props: ['params'],
created () {
console.log(this.params)
}
})
var app = new Vue({
el: '#app',
data () {
return {params: {a: 1, b: 2}}
}
})
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.js"></script>
<div id="app"><child :params="params"></child></div>
&#13;
答案 0 :(得分:1)
没有
如果将您的属性转换为吸气剂/定位器(这是Vue反应性的核心)会导致性能问题,我会非常惊讶。
传递属性的唯一方法是在某些时候将它暴露给Vue,这意味着当你公开它时将转换为getter / setter。为了传递对象而不用它们,你需要做一些像JSON.stringify
对象和JSON.parse
它在另一边。然后,只要您尝试在您的孩子中使用(例如,将其添加为数据属性),它就会再次转换为反应对象。