如何将 Vue 事件发送到状态
How to emit a Vue event into state
如何设置从组件发出的事件值直接到数据中的状态 属性 而不是先调用函数然后设置它
例如
<Input
id="firstname"
type="text"
v-model="user.firstname"
required
p="p-2
md:p-4"
class="mt-2"
errorText="First name field cannot be empty"
:validation="user.firstname.length === 0"
@valid="checkFirstName"
/>
但我想将直接来自 @valid
的值设置为我所在州的一个键
该值以$event
形式出现,您可以将其直接设置为数据属性:
@valid="name = $event"
由于你的问题被标记为 Vuex
,也许你想调用一个突变:
@valid="$store.commit('SET_NAME', $event)"
当您可以从 child 提交时,我没有看到一个很好的理由。如果问题是关于在没有突变的情况下改变 Vuex 状态,不,那是违规的,不应该这样做。
这是一个演示:
Vue.component('child', {
template: `<button @click="$emit('valid', 'myname')">click me</button>`
})
new Vue({
el: "#app",
data: () => ({
name: ''
})
});
<div id="app">
Name: {{ name }}<br>
<child @valid="name = $event"></child>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
如何设置从组件发出的事件值直接到数据中的状态 属性 而不是先调用函数然后设置它 例如
<Input
id="firstname"
type="text"
v-model="user.firstname"
required
p="p-2
md:p-4"
class="mt-2"
errorText="First name field cannot be empty"
:validation="user.firstname.length === 0"
@valid="checkFirstName"
/>
但我想将直接来自 @valid
的值设置为我所在州的一个键
该值以$event
形式出现,您可以将其直接设置为数据属性:
@valid="name = $event"
由于你的问题被标记为 Vuex
,也许你想调用一个突变:
@valid="$store.commit('SET_NAME', $event)"
当您可以从 child 提交时,我没有看到一个很好的理由。如果问题是关于在没有突变的情况下改变 Vuex 状态,不,那是违规的,不应该这样做。
这是一个演示:
Vue.component('child', {
template: `<button @click="$emit('valid', 'myname')">click me</button>`
})
new Vue({
el: "#app",
data: () => ({
name: ''
})
});
<div id="app">
Name: {{ name }}<br>
<child @valid="name = $event"></child>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>