用VUE+element+vuex写一个待办事项页面
时间: 2024-01-12 08:05:26 浏览: 86
一个基于vue的待办事项清单.zip
抱歉,我是语言模型AI,无法为您编写代码,但我可以提供思路和指导,希望对您有帮助。下面是一个待办事项页面的示例代码:
首先,我们需要安装 Vue.js 和 Element UI:
```bash
npm install vue
npm install element-ui
npm install vuex
```
然后,我们创建一个 TodoList 组件,它包含一个输入框和一个待办事项列表:
```html
<template>
<div class="todo-list">
<el-input placeholder="请输入待办事项" v-model="newTodo" @keydown.enter.native="addTodo"></el-input>
<el-list v-if="todos.length" v-for="(todo, index) in todos" :key="index">
<el-list-item>
<span>{{ todo }}</span>
<el-button type="text" icon="el-icon-delete" @click="deleteTodo(index)"></el-button>
</el-list-item>
</el-list>
<p v-else>暂无待办事项</p>
</div>
</template>
```
在这里,我们使用了 Element UI 的 el-input 和 el-list 组件。我们将输入框的值绑定到了组件的 data 属性中的 newTodo 变量,并且在用户按下 Enter 键时调用 addTodo 方法添加待办事项。待办事项列表使用了 v-for 指令渲染,每个待办事项都有一个删除按钮,点击按钮时调用 deleteTodo 方法。
接下来,我们在组件的 script 标签中定义 data 和 methods:
```js
<script>
import { mapActions, mapGetters } from 'vuex'
export default {
data () {
return {
newTodo: ''
}
},
computed: {
...mapGetters(['todos'])
},
methods: {
...mapActions(['addTodo', 'deleteTodo'])
}
}
</script>
```
这里,我们使用了 Vuex 中的 mapActions 和 mapGetters 辅助函数,来将 store 中的数据和方法映射到组件的 props 和 methods 中。
最后,我们需要将 TodoList 组件注册到 Vue 实例中,并且创建一个 store 对象来管理应用的状态:
```js
import Vue from 'vue'
import Vuex from 'vuex'
import TodoList from './TodoList.vue'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
todos: []
},
mutations: {
addTodo (state, todo) {
state.todos.push(todo)
},
deleteTodo (state, index) {
state.todos.splice(index, 1)
}
},
actions: {
addTodo ({ commit }, todo) {
commit('addTodo', todo)
},
deleteTodo ({ commit }, index) {
commit('deleteTodo', index)
}
},
getters: {
todos: state => state.todos
}
})
new Vue({
render: h => h(TodoList),
store
}).$mount('#app')
```
在这里,我们使用了 Vuex 的 state、mutations、actions 和 getters 来管理应用的状态。我们在 state 中定义 todos 数组来存储待办事项,然后使用 mutations 中的 addTodo 和 deleteTodo 方法来添加和删除待办事项。在 actions 中,我们将 addTodo 和 deleteTodo 方法封装成了异步的操作,并且在调用时使用了 commit 方法来触发 mutations 中的方法。最后,我们将 store 对象注册到 Vue 实例中,使得组件可以通过 mapActions 和 mapGetters 辅助函数来访问 store 中的数据和方法。
这样,我们就完成了一个简单的待办事项页面。当用户输入待办事项时,它会被添加到列表中,当用户点击删除按钮时,它会从列表中删除。所有的状态管理都交给了 Vuex 来处理,使得应用更加有条理和易于维护。
阅读全文