vol*_*one 6 vue.js vuejs3 vue-composition-api
我试图Form
根据另一个名为的反应变量中的数据设置 a 的值Product
,但它似乎不起作用。如果数据可用,则应Form
将其值设置为数据,如果不可用,则只需使用。Product
null
这是vue组件代码的一部分:
props: {
ProductID: {
type: Number,
default: null
}
},
setup (props) {
const Product = ref();
async function loadProduct(ProductID) { // Runs when `props.ProductID` changes using a watcher
try {
const Response = await $axios.get(`/api/product/${ProductID}`);
Product.value = Response.data; // This is an array of data
} catch (error) {
console.log(error);
}
}
}
const Form = ref({
ProductTitle: Array.isArray(Product.value) && Product.value[0].producttitle ? Product.value[0].producttitle : null,
ProductText: Array.isArray(Product.value) && Product.value[0].producttext ? Product.value[0].producttext : null,
)}
}
Run Code Online (Sandbox Code Playgroud)
在 vue devtools 中,我可以看到它Product
填充了数据,但这些值从未分配给Form
键 - 它们只是空。如果Product
是反应式的,那么 也是反应式的Form
,为什么这不起作用?
您的Form
仅在setup
首次运行时初始化,因此它仅初始化但不会更新。如果你想Form
在Product
更新时更新,你可以使其computed
属性依赖于Product
:
const Form = computed(() => ({
ProductTitle: Array.isArray(Product.value) && Product.value[0].producttitle ? Product.value[0].producttitle : null,
ProductText: Array.isArray(Product.value) && Product.value[0].producttext ? Product.value[0].producttext : null,
}))
Run Code Online (Sandbox Code Playgroud)
或者你可以手动更新Form
,loadProduct
这样每当Product
重新加载时,Form
也会得到更新:
const Form = ref({})
async function loadProduct(ProductID) { // Runs when `props.ProductID` changes using a watcher
try {
const Response = await $axios.get(`/api/product/${ProductID}`);
Product.value = Response.data; // This is an array of data
Form.value = {
ProductTitle: Array.isArray(Product.value) && Product.value[0].producttitle ? Product.value[0].producttitle : null,
ProductText: Array.isArray(Product.value) && Product.value[0].producttext ? Product.value[0].producttext : null,
}
} catch (error) {
console.log(error);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16701 次 |
最近记录: |