我有一个 Select 组件,它接受options. 每个都option可以是任何事物的对象,只要它具有以下属性id并且text
所以我这样输入:
type SelectOption<T> = {
id: string | number
text: string
} & T
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在组件中使用defineProps它defineEmits。
defineProps<{
options: SelectOption<??>
modelValue: SelectOption<??>
}>()
defineEmits<{
(event: 'update:modelValue', SelectOption<??>): void
}>()
Run Code Online (Sandbox Code Playgroud) 我按如下方式设置代码,并且能够checkout_info从 SomeComponent.vue 中的 setter 更新 App.vue,但 SomeComponent.vue 中的 getter 不是反应式的。
// App.vue
export default {
provide() {
return {
checkout_info: this.checkout_info,
updateCheckoutInfo: this.updateCheckoutInfo
}
},
data() {
return {
checkout_info: {},
}
},
methods: {
updateCheckoutInfo(key, value) {
this.checkout_info[key] = value
}
}
}
Run Code Online (Sandbox Code Playgroud)
// SomeComponent.vue
export default {
inject: ['checkout_info', 'updateCheckoutInfo']
computed: {
deliveryAddress: {
get() { return this.checkout_info.delivery_address }, // <---- Not reactive??
set(value) { return this.updateCheckoutInfo('delivery_address', value) }
}
}
}
Run Code Online (Sandbox Code Playgroud) 在 Vuetify 中,您可以设置如下代码,VForm组件可以自动检查其中的所有输入是否VForm有效,而无需来回传递任何道具。如何在 Vue 2 中为我自己的表单和输入组件实现此功能?
<template>
<v-form v-model="formIsValid">
<v-text-field :rules="[required]"></v-text-field>
</v-form>
</template>
<script>
data() {
return {
formIsValid: false
}
},
methods: {
required(val) {
return !!val || 'Required.'
}
}
</script>
Run Code Online (Sandbox Code Playgroud) 我通常skip_before_action :verify_authenticity_token在 API 控制器中编写,但我刚刚发现还有一个protect_from_forgery except :action. 有什么区别以及我什么时候应该使用哪一个?