vue3created怎么改
时间: 2024-12-21 12:27:19 浏览: 4
在 Vue 3 中,`created` 生命周期钩子可以使用组合式 API (`setup` 函数) 来实现。以下是如何将 `created` 钩子迁移到 Vue 3 的 `setup` 函数中的示例:
### 原 Vue 2 代码
假设你在 Vue 2 中有如下代码:
```javascript
export default {
data() {
return {
categoryList: [],
businessList: []
};
},
created() {
this.init();
},
methods: {
init() {
// 请求服务器端,加载分类信息
let url = "/CategoryHandler/get";
axios.get(url)
.then(response => {
this.categoryList = response.data.resultdata;
})
.catch(e => {
console.log(e);
});
let business_url = "/BusinessHandler/listByCategoryId?categoryId=" + 0;
axios.get(business_url)
.then(response => {
this.businessList = response.data.resultdata;
})
.catch(e => {
console.log(e);
});
}
}
};
```
### 迁移到 Vue 3 的 `setup` 函数
在 Vue 3 中,你可以使用 `onMounted` 钩子来替代 `created` 钩子,并且使用 `ref` 或 `reactive` 来管理响应式数据。
```javascript
<script setup>
import { ref, onMounted } from 'vue';
import { get } from '../api';
const categoryList = ref([]);
const businessList = ref([]);
const init = () => {
// 请求服务器端,加载分类信息
let url = "/CategoryHandler/get";
get(url)
.then(response => {
categoryList.value = response.data.resultdata;
})
.catch(e => {
console.log(e);
});
let business_url = "/BusinessHandler/listByCategoryId?categoryId=" + 0;
get(business_url)
.then(response => {
businessList.value = response.data.resultdata;
})
.catch(e => {
console.log(e);
});
};
// 在组件挂载时调用 init 方法
onMounted(() => {
init();
});
</script>
```
### 解释
1. **导入必要的模块**:从 `vue` 导入 `ref` 和 `onMounted`。
2. **定义响应式数据**:使用 `ref` 定义 `categoryList` 和 `businessList`。
3. **定义初始化方法**:`init` 方法中进行网络请求并更新响应式数据。
4. **使用 `onMounted` 钩子**:在组件挂载时调用 `init` 方法。
这样,你就完成了从 Vue 2 的 `created` 钩子到 Vue 3 的 `setup` 函数的迁移。
阅读全文