用vuex写一个学生信息管理系统
时间: 2023-05-21 17:07:10 浏览: 126
学生信息管理系统模板.zip
5星 · 资源好评率100%
好的,我可以回答这个问题。首先,在Vuex中,我们需要定义状态、mutations、actions和getters,以管理学生信息。在状态中,我们可以定义一个数组来存储学生信息,每个学生信息可以是一个包含姓名、年龄、性别等属性的对象。然后,通过mutations来操作状态,例如添加学生、删除学生等。在actions中,我们可以实现异步操作,例如从后台获取学生信息并更新状态。最后,在getters中,我们可以定义一些计算属性,例如获取年龄大于18岁的学生数目等。整个代码可以是这样的:
// store.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
students: []
},
mutations: {
addStudent(state, student) {
state.students.push(student)
},
deleteStudent(state, index) {
state.students.splice(index, 1)
}
},
actions: {
async getStudents({commit}) {
const students = await fetch('/api/students').then(res => res.json())
commit('setStudents', students)
}
},
getters: {
adultStudentCount(state) {
return state.students.filter(student => student.age >= 18).length
}
}
})
export default store
// student.vue
<template>
<div>
<form @submit.prevent="addStudent">
<input type="text" v-model="name">
<input type="number" v-model="age">
<input type="radio" value="male" v-model="gender">男
<input type="radio" value="female" v-model="gender">女
<button type="submit">添加学生</button>
</form>
<ul>
<li v-for="(student, index) in students" :key="index">
{{ student.name }},{{ student.age }},{{ student.gender }}
<button @click="deleteStudent(index)">删除</button>
</li>
</ul>
<p>成年学生数目: {{ adultStudentCount }}</p>
</div>
</template>
<script>
import { mapState, mapMutations, mapActions, mapGetters } from 'vuex'
export default {
computed: {
...mapState(['students']),
...mapGetters(['adultStudentCount'])
},
methods: {
...mapMutations(['addStudent', 'deleteStudent']),
...mapActions(['getStudent'])
},
async created() {
await this.getStudents()
}
}
</script>
阅读全文