当前位置: 首页 > 知识库问答 >
问题:

Vue2将对象作为道具发送到空组件或带有属性的组件

薛枫
2023-03-14

假设我们有两个路由:edit/1edit/new

根容器(装载时)检查是否存在this.$route.params.id,如果存在,则从API获取数据并填充obj。否则,相关的obj将保持为空。

此对象被发送到具有以下内容的子组件:

<template>
  <input v-model="obj.name">
  <input v-model=obj.email">
</template>

<script>
export default {
  props: {
    obj {
      type: Object,
      default: () => {}
    }
  },
}
</script>

我现在遇到的问题是,当我发送一个空对象时,没有任何渲染。这个问题与空对象有关吗?据我所知,属性可以像这样在Vue中动态添加。

如果您需要更多信息,请询问!

共有2个答案

令狐晟
2023-03-14

问题是您需要在对象中声明prop成员,或者使用Vue.set从父对象添加新的被动属性。

default: () => ({name:null, email:null})
// or
default: () => { return {name:null, email:null} }

还是在父母身上

Vue.set(defaultObjWithoutMembers, 'name', 'foo')

Vue2无法检测或跟踪不属于原始对象声明的属性。

看见https://vuejs.org/v2/guide/reactivity.html

公羊兴文
2023-03-14

只是为了记录在案

default: () => {}

不会将空对象作为默认值返回。arrow函数将返回void。如果您试图将空对象设置为默认使用

default: () => ({})

无论如何,由于不鼓励道具突变,它们在Vue2中被视为反模式(请参见Vue 2-突变道具Vue warn),因此您应该添加一个数据字段,该字段要么已声明默认值,要么从相应的道具字段中获取其默认值

props: {
  obj: {
    type: Object,
    default: () => ({ name: '', email: '' })
  }
}
data() {
  return {
    name: this.obj.name,
    email: this.obj.email,
  }
}
 类似资料:
  • 问题内容: 可以说我有: 在Tabs组件内部,具有属性 儿童[0](this.props.children)看起来像 儿童[0]。道具看起来像 最终,Children对象看起来像(这是我想要传递的): 问题是这样,如果我这样重写MultiTab 在选项卡组件内部 看起来和上面一样。 好像 我希望该物业看起来像。上面只是打印出Statement函数。 这是一个很奇怪的问题,但是长话短说,我正在使用一

  • 我正在尝试模拟react bootstrap

  • 我有一个PHP对象数组,比如有两个属性和。所以比如说我可以做 数组当前使用每个对象的属性的值作为数组键,例如。 这样我就可以通过该属性快速查找对象。我现在需要通过快速查找,所以想要将键从设置为属性切换到设置为(两者都是唯一的)。 有简单的方法吗?就地或进入另一个数组都可以。

  • 问题内容: 是否有可能从具有特定属性的数组中获取对象?还是我需要遍历数组中的所有对象并检查属性是否是我正在寻找的特定对象? 编辑:谢谢你给我正确的方向,但我有一个转换此问题。 //再编辑一次:好的,如果只有一个特定的结果?这也是可行的方法吗? 问题答案: //这不起作用-NSArray不是Images的子类型-那么如果只有1种可能的结果怎么办? 您无法在编译时证明数组上只有一个可能的结果。您实际要

  • 我正在使用react语义ui模态对象。打开模态的对象是一个道具。 我想在另一个组件中嵌入模态: 如何传递JSX代码(

  • 有没有一种简单的方法,使用或或其他方法来转换数组,如下所示: 变成一个简单的数组,该数组填充了前一个数组中包含的对象的一个属性,如下所示: