【发布时间】:2021-09-13 02:28:56
【问题描述】:
使用 Vue 3、打字稿、组合 API 和 FireStore 数据,当尝试通过键值更改重置表单时,所有reactive() 数据都会重置为其原始存储值除了嵌套对象数据。 ..在这种情况下address: {}。
家长
<template>
...
<component :key="formKey" @reset="formReset" :FireStoreData="fsData" />
...
</template>
<script lang="ts">
...
export default defineComponent({
...
setup(){
const formKey = ref(0)
const formReset = () => formKey.value++
return { activeForm, formKey, formReset }
}
})
</script>
子表单
<template>
<form>
<input type="text" v-model="name" /> // RESETS
<input type="text" v-model="address.street" /> // DOES NOT RESET
<input type="text" v-model="address.city" /> // DOES NOT RESET
<input type="text" v-model="phone" /> // RESETS
<button @click.prevent="reset">Reset</button>
</form>
</template>
<script lang="ts">
...
export default defineComponent({
...
setup(props, {emit}){
const formData = reactive({
name: '',
address: {
street: '',
city: ''
},
phone: ''
})
Object.assign(formData, props.FireStoreData)
const reset = () => emit('reset')
return { ...toRefs(formData), reset }
}
})
</script>
【问题讨论】:
-
简单复制你这里的东西似乎对我很有效
标签: javascript vue.js google-cloud-firestore