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

vue3 - Vue 3 computed 里面set 更新 props 传递过来的对象属性,怎么改?

桂高义
2024-01-16

6f2efc6d897f2146298d638a8e8d6e8.png

  <van-popup    id="popup"    overlay-class="header-overlay"    v-model:show="modal.visible"    @click-overlay="closeModal"  ></van-popup>

modal是通过props传递过来的报错了,unexceped mutation of modal prop 这种怎么改?

export default defineComponent({  props: {    modal: Object  },

现在改成这种形式 changeShow 替换modal.visible,这里set 会有问题,set这里怎么改?
image.png

 const changeShow = computed({      get() {        console.log('xxxxxxxxxxxxxxxxxxxxxx', props.modal, props.modal.visible)        return props.modal.visible      },      set(val) {        console.log('zzzzzzzzzzzzzzzz', val)        // props.modal.visible = val        this.$emit('update:[modal.visible]', val)      }    })

共有1个答案

单于庆
2024-01-16

你可以通过定义一个 updateModalVisible 方法来更新 modal.visible 的值。这个方法可以在组件内部定义,并在 set 函数中调用。

以下是一个示例代码:

export default defineComponent({  props: {    modal: Object  },  setup(props) {    const changeShow = computed({      get() {        return props.modal.visible;      },      set(val) {        props.updateModalVisible(val);      }    });    const updateModalVisible = (val) => {      props.modal.visible = val;    };    return { changeShow, updateModalVisible };  }});

在这个示例中,updateModalVisible 方法用于更新 modal.visible 的值。在 set 函数中,我们调用 updateModalVisible 方法并将新的值作为参数传递给它。这样就可以通过 Vue 3 的响应式系统更新 props 中传递的对象属性。

 类似资料:
  • 问题内容: 我正在考虑我的应用程序的解决方案。这是一种情况:我有一个类,该类的方法将ObjectA作为输入参数并调用几个小方法,这些方法中的每个方法都需要ObjectA的某些部分(它们不重叠,即需求和,需求等等)。 …)现在的问题是:鉴于一般的良好代码实践和性能,将ObjectA传递给这些方法中的每一个方法更好,以便它们可以自己提取所需的值,还是仅传递它们的值更好?我的意思是: 要么 感谢您的任何

  • 问题: 我使用 pinia 进行状态管理,写法大概如下,由于我修改的是数组中某个对象下的对象的属性,数组更新后,页面无法重新渲染。 当我点击按钮修改元素的 x,y,width,height 某个样式值的时候,layerList 中对应的元素的下的style对象的下属性值也会更新,由于页面是根据这个对象来渲染内联样式的, style 在手动更新后一直无法更新,想请教下各位大佬这是什么原因? 数组 l

  • 问题内容: 传递道具时,应该将整个对象传递到子组件中,还是应该先在父组件中单独创建道具,然后再将这些道具传递给子组件? 传递整个对象: 单独创建首先需要的道具: 哪一个是首选,并且取决于它,我应该使用哪个作为量规? 问题答案: 您应该更喜欢第二个示例,以单独传递道具。在这里,您可以清楚地看到传递了哪些参数,并可以与期望的参数快速比较。这使人们之间的协作更加容易,并使应用程序的状态更加清晰。 我个人

  • 任何实现都没问题。我正在寻找一个处理这种案件的好方法。感觉手动查找字段涉及“太多的键入”。

  • 需求,我的 vue3 中的 data=ref([]) 更新之后,我希望 echarts 的图标也跟着一起更新 但是目前不会,我该怎么修改

  • 父组件 子组件 我在父组件定义了perosn对象({ name:"zhangsan", age:90 })然后传递给子组件,然后在子组件定义了defineProps的数据类型接口, interface Person { name: string; age: number; } interface UserInfoProps { person: Person; } 现在有个问题,我什么我修改了父组件