[Nuxt] Update State with Vuex Actions in Nuxt.js
2024-10-01 18:13:52
You can conditionally add classes to Vue.js templates using v-bind:class
. This will help display the status of a todo as you add a Vuex action to patch todos. This lesson walks you through setting up a toggle button that triggers a toggle action to patch todos in Vuex.
<template>
<div>
<form @submit.prevent="add(task)">
<input v-model="task" type="text" />
<input type="submit" value="ADD">
</form>
<article class="pa3 pa5-ns">
<ul class="list pl0 ml0 center mw6 ba b--light-silver br2">
<li v-for="todo of todos" class="flex items-center ph3 pv3 bb b--light-silver">
<span v-bind:class="{strike: todo.complete}" class="flex-auto">{{todo.id}} {{todo.task}}</span>
<button @click="toggle(todo)"><img src="https://icon.now.sh/check" alt="toggle"></button>
<button @click="remove(todo)"><img src="https://icon.now.sh/trash" alt="delete"></button>
</li>
</ul>
</article>
</div>
</template> <script>
import { mapState, mapActions } from 'vuex'
import {init} from './shared' export default {
fetch: init,
computed: {
...mapState({
todos: (state) => state.todos
})
},
data () {
return {
task: 'Some data'
}
},
methods: {
...mapActions([
'add',
'remove',
'toggle'
])
}
}
</script>
store/index.js:
import Vuex from 'vuex'
import axios from 'axios' const store = () => new Vuex.Store({
state: {
todos: [
]
},
mutations: {
init (state, todos) {
state.todos = todos
},
add (state, todo) {
state.todos = [
...state.todos,
todo
]
},
remove (state, todo) {
state.todos = state.todos.filter((t) => {
return t.id !== todo.id
})
},
toggle (state, todo) {
state.todos = state.todos.map(t => {
return t.id === todo.id
? todo
: t
})
}
},
actions: {
async add (context, task) {
const commit = context.commit
const res = await axios.post('https://todos-cuvsmolowg.now.sh/todos', {
task,
complete: false
})
commit('add', res.data)
},
async remove ({commit}, todo) {
await axios.delete(`https://todos-cuvsmolowg.now.sh/todos/${todo.id}`)
commit('remove', todo)
},
async toggle ({commit}, todo) {
const res = await axios.patch(`https://todos-cuvsmolowg.now.sh/todos/${todo.id}`, {complete: !todo.complete})
commit('toggle', res.data)
}
}
}) export default store
最新文章
- 用extract-text-webpack-plugin提取出来的css文件中背景图片url的不正确的问题
- gnuplot安装的小问题
- JavaScript-BOM-history:保存当前窗口打开后成功访问过的url历史记录栈
- 11. 求奇数分之一序列前N项和
- 给ubuntu系统换新装
- 基于SOCK4网络协议的代理服务器端代码示例
- 如何自定义一个优雅的ContentProvider
- js遍历集合
- MapReduce工作原理图文详解 (炼数成金)
- mysql 导出,导入数据
- 2017年最新15个漂亮的 HTML 摄影网站模板
- telnet配置和telnet用法
- Python内置函数(20)——hex
- SDL2源代码分析2:窗口(SDL_Window)
- 关于ip通信学习感想
- 【css】正确的让文本换行
- 初识ActiveMQ
- 解决通过Nginx转发的服务请求头header中含有下划线的key,其值取不到的问题
- 『Python』VS2015编译源码注意事项
- Elasticsearch集成HanLP分词器
热门文章
- jdbc的数据库驱动类DriverManager.getConnection()详解
- Java(标识符,关键字,注释,常量,变量)
- Flask的快速入门详细笔记
- 【Educational Codeforces Round 36 B】Browser
- HUD——T 3836 Equivalent Sets
- Spring源码分析专题——目录
- 11. Linux——LCD驱动程序
- [Node.js] Serve Static Files with Express
- matlab 可视化 —— 高级 api(montage)、insertObjectAnnotation、insertMaker
- wampserver安装后访问localhost出现 Forbidden问题