为什么我在 Vue 3 表单中绑定的数据在通过函数打印在控制台上时没有更新?
P粉354602955
P粉354602955 2023-09-04 11:50:33
0
1
370
<p>我在 Vue 3 中创建了一个表单组件,我试图将引用对象绑定到输入元素,根据我对双向绑定的理解以及 Vue 在我过去的作品中的行为方式,我预计任何更改都会影响我的引用立即对象,而不需要任何操作,就像我必须通过触发“onChange”反应事件来处理 React 组件一样。</p> <p>但是,当我单击“保存”按钮来触发输出引用对象的函数时,它似乎只保留最初加载的值,而不保留我在输入中所做的任何更改。谁能解释一下为什么吗?</p> <p>这是我的组件的代码。它会在弹出窗口中加载。</p> <pre class="brush:php;toolbar:false;">&lt;script setup lang=&quot;ts&quot;&gt; import type { Activity } from '@/models/activity'; import { ref } from &quot;vue&quot;; import Button from '../../common/Button.vue'; defineEmits([ &quot;close-form&quot; ]); const props = defineProps&lt;{ title?: String, activity?: Activity, editMode: Boolean }&gt;(); const initialState = props.activity ?? { id: '', title: '', category: '', description: '', date: '', city: '', venue: '' } const currActivity = ref&lt;Activity&gt;(initialState); const handleSubmit = () =&gt; { console.log(currActivity.value); } // const handleInputChange = (event: Event) =&gt; { // const {name, value} = event.target as HTMLInputElement; // console.log(name, value); // // currActivity.value[name] = value; // } &lt;/script&gt; &lt;template&gt; &lt;form class=&quot;grid grid-cols-5 gap-4 mb-8&quot; @submit=&quot;handleSubmit&quot; autocomplete=&quot;off&quot; &gt; &lt;h2 v-if=&quot;title&quot; class=&quot;col-span-5 mb-4 text-white text-3xl font-semibold&quot; &gt; {{ title }} &lt;/h2&gt; &lt;input type=&quot;text&quot; placeholder='Title' class='col-span-3 mb-4 px-2 py-1 rounded' :value=&quot;currActivity.title&quot; name=&quot;title&quot; /&gt; &lt;input type=&quot;text&quot; placeholder='Category' class='mb-4 px-2 py-1 rounded' :value=&quot;currActivity.category&quot; name=&quot;category&quot; /&gt; &lt;textarea placeholder='Description' class='col-span-5 mb-4 px-2 py-1 rounded' :value=&quot;currActivity.description&quot; name=&quot;description&quot; /&gt; &lt;input type=&quot;text&quot; placeholder='Date' class='px-2 py-1 rounded' :value=&quot;currActivity.date&quot; name=&quot;date&quot; /&gt; &lt;input type=&quot;text&quot; placeholder='City' class='px-2 py-1 rounded' :value=&quot;currActivity.city&quot; name=&quot;city&quot; /&gt; &lt;input type=&quot;text&quot; placeholder='Venue' class='px-2 py-1 rounded' :value=&quot;currActivity.venue&quot; name=&quot;venue&quot; /&gt; &lt;div v-if=&quot;editMode &amp;&amp; activity&quot; class=&quot;flex justify-end col-span-2&quot; &gt; &lt;Button text=&quot;Save&quot; icon=&quot;fa-floppy-disk&quot; type=&quot;send&quot; @click=&quot;handleSubmit&quot; /&gt; &lt;Button text=&quot;Close&quot; icon=&quot;fa-xmark&quot; type=&quot;cancel&quot; @click=&quot;$emit('close-form')&quot; /&gt; &lt;/div&gt; &lt;div v-else class='flex justify-end col-span-2' &gt; &lt;Button text=&quot;Post&quot; icon=&quot;fa-paper-plane&quot; type=&quot;send&quot; @click=&quot;handleSubmit&quot; /&gt; &lt;/div&gt; &lt;/form&gt; &lt;/template&gt;</pre> <p>您可能会注意到我的脚本中的注释函数。我尝试复制 React 方法并处理使用输入元素上的“@change”触发的更改事件的更改。后来我删除了它们,因为这似乎不起作用。我保留了评论功能,但以防万一有人发现它有助于查找问题。</p>
P粉354602955
P粉354602955

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!