我是 Vue.js 的新手,我為用戶創建了一個簡單的表單并使用 API 存盤資料。
在提交時,我正在呼叫這個函式:
setup(props, { emit }) {
const blankData = {
customer: '',
template: '',
rate: '',
property_from: '',
property_to: '',
move_date: '',
num_days: '',
token: '',
details: '',
customer_options: [],
template_options: [],
rate_options: [],
property_from_options: [],
property_to_options: [],
}
const userData = ref(JSON.parse(JSON.stringify(blankData)))
const resetuserData = () => {
userData.value = JSON.parse(JSON.stringify(blankData))
}
const toast = useToast()
const onSubmit = () => {
store.dispatch('app-user/addUser', userData.value)
.then(
response => {
if (response.status === 1) {
this.$router.push({ name: 'edit-user', params: { id: 10 } })
}
toast({
component: ToastificationContent,
props: {
title: response.message,
icon: response.toastIcon,
variant: response.toastVariant,
},
})
},
error => {
console.log(error)
},
)
}
const {
refFormObserver,
getValidationState,
resetForm,
} = formValidation(resetuserData)
return {
userData,
onSubmit,
refFormObserver,
getValidationState,
resetForm,
}
},
并嘗試在用戶創建后將用戶重定向到編輯頁面,但我收到此錯誤而不是重定向:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'router')
我已經嘗試過這個stackoverflow 答案,但得到同樣的錯誤:
const onSubmit = () => {
const self = this
store.dispatch('app-user/addUser', userData.value)
.then(
response => {
if (response.status === 1) {
self.$router.push({ name: 'edit-user', params: { id: 10 } })
}
},
error => {
console.log(error)
},
)
}
知道我在代碼中做錯了什么嗎?
uj5u.com熱心網友回復:
您正在使用 Vue 3 和設定功能;this設定功能中沒有。
請參閱在設定中訪問路由器和當前路由。
未經測驗,但可能像這樣的事情會起作用:
setup() {
const router = useRouter()
const onSubmit = () => {
// ... code omitted ...
router.push({ name: 'edit-user', params: { id: 10 } })
}
return {
onSetup,
// other stuff...
}
}
uj5u.com熱心網友回復:
我認為這可能會有所幫助
帶有組合 API 的路由器 https://next.router.vuejs.org/guide/advanced/composition-api.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364343.html
