在Vue中,created和methods是两个不同的生命周期钩子和实例方法,它们分别在不同的时机被执行。
created是Vue实例在创建完成后立即调用的生命周期钩子,它在实例被创建之后立即执行,这意味着在created钩子函数执行时,Vue实例已经完成了数据观测、属性和方法的运算、事件回调的初始化等一系列的操作。
methods是Vue实例中定义的方法,用于处理用户交互或响应数据变化等功能。methods可以在Vue实例创建后被调用,可以通过this关键字来访问Vue实例中的数据和其他方法。
由于created钩子函数是在Vue实例创建完成后立即执行的,因此created钩子函数执行的时候,methods已经被定义了,也就是说methods比created先执行。也就是说,当Vue实例创建完成后,created钩子函数会被立即调用,然后才会执行methods中的方法。
需要注意的是,在Vue中,created钩子函数只会在实例创建时执行一次,而methods中的方法可以被多次调用。
vue的生命周期有哪些
在Vue中,一个组件实例从创建到销毁的过程中,会触发一系列的生命周期钩子函数,这些钩子函数可以让我们在不同的阶段执行一些特定的逻辑,方便我们进行状态管理、数据操作、DOM更新等操作。Vue的生命周期可以分为以下八个阶段:
- beforeCreate: 在实例被创建之初,数据观测和属性初始化之前执行。
- created: 在实例被创建之后,数据观测和属性初始化完成之后执行。
- beforeMount: 在模板编译和挂载之前执行。
- mounted: 在模板编译和挂载完成之后执行。
- beforeUpdate: 在数据更新之前,DOM被重新渲染之前执行。
- updated: 在数据更新之后,DOM被重新渲染之后执行。
- beforeDestroy: 在实例被销毁之前执行,此时实例仍然可用。
- destroyed: 在实例被销毁之后执行,此时实例已经不可用。
除了这些钩子函数之外,还有一些其他的钩子函数,例如activated和deactivated,用于处理组件的keep-alive状态。
需要注意的是,每个生命周期钩子函数都有特定的用途和执行时机,使用不当可能会导致一些问题,因此在使用时需要结合具体场景进行选择和合理使用。
实例被创建之后的流程图
查询逻辑,点击下面图片可以放大
删除逻辑
删除功能
vue代码
<template>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="id"
label="id"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="名字"
width="180">
</el-table-column>
<el-table-column
prop="age"
label="年龄"
width="180">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row.id)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script>
import { listNotice, delNotice } from "@/api/student/student";
export default {
data() {
return {
tableData: []
}
},
created() {
this.getList();
},
methods: {
/** 查询学生列表 */
getList() {
listNotice().then(response => {
this.tableData = response.data;
});
},
/** 点击删除按钮 */
handleDelete(id){
console.log(id)
this.$modal.confirm('是否确认删除学生编号为"' + id + '"的数据项?').then(function() {
return delNotice(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
}
}
}
</script>
<style>
</style>
js代码
import request from '@/utils/request'
// 查询列表
export function listNotice(query) {
return request({
url: '/student/student/list',
method: 'get',
params: query
})
}
// 删除学生
export function delNotice(id) {
return request({
url: '/student/student/delete?id=' + id,
method: 'get'
})
}
增加功能
vue代码
<template>
<div>
<el-button type="primary" @click="addBtn()">添加</el-button>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="id"
label="id"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="名字"
width="180">
</el-table-column>
<el-table-column
prop="age"
label="年龄"
width="180">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row.id)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加 -->
<el-dialog title="收货地址" :visible.sync="dialogFormVisible">
<el-form :model="form">
<el-form-item label="学生姓名" :label-width="formLabelWidth">
<el-input v-model="form.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="学生年龄" :label-width="formLabelWidth">
<el-input v-model="form.age" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="formOk()">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listNotice,delNotice,addNotice } from "@/api/student/student";
export default {
data() {
return {
tableData: [],
dialogFormVisible : false,
form : {}
}
},
created() {
this.getList();
},
methods: {
/** 查询公告列表 */
getList() {
listNotice().then(response => {
this.tableData = response.data;
});
},
/** 点击删除按钮 */
handleDelete(id){
this.$modal.confirm('是否确认删除学生编号为"' + id + '"的数据项?').then(function() {
return delNotice(id);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 点击确定按钮事件 */
formOk(){
addNotice(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.dialogFormVisible = false;
this.getList();
});
},
/** 点击添加事件 */
addBtn(){
this.form = {};
this.dialogFormVisible = true
}
}
}
</script>
<style>
</style>
js代码
import request from '@/utils/request'
// 查询列表
export function listNotice(query) {
return request({
url: '/student/student/list',
method: 'get',
params: query
})
}
// 删除学生
export function delNotice(id) {
return request({
url: '/student/student/delete?id=' + id,
method: 'get'
})
}
// 新增学生
export function addNotice(data) {
return request({
url: '/student/student/add',
method: 'post',
data: data
})
}


