простая форма
<form>
<input type="text" name="name" v-model="form.name.value" />
</form>
<script>
export default {
setup() {
const form = {
name: {
value: "",
},
}
return { form }
}
}
</script>
в таком виде всё прекрасно работает и отображается.
Но стоит мне вынести инициализацию формы в отдельный модуль, как всё перестаёт работать.
// form.js
import { reactive } from "vue"
export myForm(data) {
const form = reactive({})
for (const [key, val] of Object.entries(data)) {
form[key] = val
}
}
и в компоненте:
<script>
import { myForm } from "./myForm"
export default {
setup() {
const form = myForm({
name: {
value: "",
},
})
return { form }
}
}
</script>
и тут ошибки сыпятся
runtime-core.esm-bundler.js?d2dd:38 [Vue warn]: Unhandled error during execution of render function
at <FormView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > >
at <RouterView>
at <App>
runtime-core.esm-bundler.js?d2dd:38 [Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core
at <FormView onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > >
at <RouterView>
at <App>
Тут экспортируется initForm, а импортируется myForm
При этом initForm ничего не возвращает
исправил. это считаем просто опечаткой )
Тут функция описывается в одну строчку: return reactive({ ...data })
И возврат значения?
возврат тоже забыл тут дописать. всё это есть
И тут по получении значения делаешь деструктуризацию?)
пример упрощён, поэтому в одну строчку там никак )
В функции возвращается объект с полем для формы, а получается, будто сразу форма)
Обсуждают сегодня