mst*_*std 3 vue.js vuejs3 vue-composition-api
在 vuejs3 应用程序中,我使用 axios 方法从数据库中检索数据,例如:
<script>
import appMixin from '@/appMixin'
import app from './../../App.vue' // eslint-disable-line
import axios from 'axios'
const emitter = mitt()
export default {
name: 'adminCategoriesList',
mixins: [appMixin],
data: function () {
return {
categoriesPerPage: 20,
currentPage: 1,
categoriesTotalCount: 0,
categories: []
}
},
components: {
},
setup () {
const adminCategoriesListInit = async () => {
this.loadCategories() // ERROR HERE
}
function onSubmit (credentials) {
alert(JSON.stringify(credentials, null, 2))
console.log('this::')
console.log(this)
console.log('app::')
}
onMounted(adminCategoriesListInit)
return {
// schema,
onSubmit
}
}, // setup
methods: {
loadCategories() {
...
}
Run Code Online (Sandbox Code Playgroud)
我在浏览器的控制台中出现错误:
Cannot read property 'loadCategories' of undefined
Run Code Online (Sandbox Code Playgroud)
如果要删除“这个”。在 loadCategories 调用中我收到错误:
'loadCategories' is not defined
Run Code Online (Sandbox Code Playgroud)
我需要将 loadCategories 作为方法,因为我需要从不同的地方调用它。
哪种方式是正确的?
谢谢!
您可以在同一组件中使用组合和选项 api,但对于不同的属性和方法,在您的情况下,数据属性可以setup使用ref或在钩子内定义reactive,方法可以定义为普通的 js 函数:
import {ref} from 'vue'
export default {
name: 'adminCategoriesList',
mixins: [appMixin],
components: {
},
setup () {
const categoriesPerPage= ref(20);
const currentPage=ref(1);
const categoriesTotalCount=ref(0),
const categories=ref[])
const adminCategoriesListInit = async () => {
loadCategories()
}
function onSubmit (credentials) {
alert(JSON.stringify(credentials, null, 2))
}
functions loadCategories(){
...
}
onMounted(adminCategoriesListInit)
return {
// schema,
onSubmit,
categoriesPerPage,
currentPage,
categoriesTotalCount,
categories
}
},
Run Code Online (Sandbox Code Playgroud)
定义的属性ref可以由property.value模板使用/改变并在模板中使用{{property}}
| 归档时间: |
|
| 查看次数: |
4148 次 |
| 最近记录: |