用Todolist实现增删查改操作

Todolist实现增删查改:

步骤如下:

基本思路:
一 :UI界面
二:增删查改功能实现

(1):创建Todeolist组件
(2):添加列表项功能
(3):删除列表元素
(4):使用组件化实现删除功能

三:数据持久化操作

(1):代码优化,暂时性储存

一:UI界面的实现
1.1 UI概述

UI是User Interface的缩写。其中,“Interface”前缀“Inter”的意思是“在一起、交互”,而翻译成中文“界面”之后, “交互”的概念没能得到体现。
用户研究、交互设计、界面设计。
首先,UI是指人与信息交互的媒介,它是信息产品的功能载体和典型特征。其次,UI是指信息的采集与反馈、输入与输出,这是基于界面而产生的人与产品之间的交互行为。最后,UI的高级形态可以理解为User Invisible。

二:增删查改功能实现
2.1:添加数据

对输入框绑定事件点击提交按钮使输入框内容生成到页面上 代码如下:
// 输入框内容提取并重设

   msg(e){
        this.setState({
            inputValue : e.target.value
        })
    }
    // 按钮点击事件添加内容 (在内存中添加)
    add(){
        this.setState({
            // ...扩展运算符展开之后(不合并)
            list : [...this.state.list,this.state.inputValue],
            // 清空文本框的数据
            inputValue:''
        });
    }
2.2:删除数据

添加删除按钮事件,用于删除展示元素 代码如下:

delete(index){
    var list = [...this.state.list];
    list.splice(index,1);
    this.setState({
        list:list
    })
}
2.3:修改数据

添加修改按钮事件,用于修改展示元素 代码如下:

   update(index){
        //弹出输入框,用于填写新内容
        var arr = this.state.list;
        // prompt()方法用于显示可提示用户进行输入的对话框。
        //         这个方法返回用户输入的字符串。
        var rel = window.prompt('请输入新内容:');
        if(rel != null){
            arr.splice(index,1,rel);
            this.setState({
                list:arr
            })
        }
    } 
注意:
  • 字母大小写区分,尤其是方法和属性的大小写
  • 最好用驼峰命名法命名变量等
三:数据持久化操作

使用react自带的方法实现本地数据初始化

// 加载时执行  (渲染前执行 页面输出前执行) 时 初始化浏览器本地储存的数据
    componentDidMount(){
        //从localStrong中获取myList
        var myList=window.localStorage.getItem('myList');
        if(myList===null || myList === ''){
            myList = []//初始化myList数组
        }else{
            // 用split()方法使得到的字符串转为数组
            myList = myList.split(',');
        }
        // 重设state值
        this.setState({
            list : myList
        });
        // 用来清空本地储存(用的时候放开注释)
        // window.localStorage.clear();
    }

增删查改时都要存入本地

  // 即使用setState()方法,this.setState(obj,function),修改state属性的函数,
    // 参数1是要更新的数据对象,参数2是回调函数,参数2的主要作用是,用于展示更新后的state数据
    // 以添加事件为例
    add(){
        this.setState({
            // ...扩展运算符展开之后(不合并)
            list : [...this.state.list,this.state.inputValue],
            // 清空文本框的数据
            inputValue:''
        },()=>{
            // 将this.state.myList的内容放到当前myList中
            console.log(this.state.list);
            window.localStorage.setItem('myList',this.state.list)
        });
    }
最后总结

(1):组件规划:明确需求功能,明确功能对应的组件之间的关系
(2):子组件进行事件操作,将用户的行为记录下来,然后通过参数传到app做 数据处理和setState。
(3):多用心练习,理解组件之间的关系与关联基本上就可以了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为你提供一个简单的示例代码,用于展示如何使用Vue组件化、Vue路由、Vuex和Axios来实现增删改查功能。 首先,我们需要安装Vue、Vue Router、Vuex和Axios,你可以使用npm或yarn来安装它们。 接下来,我们创建一个Vue组件,用于显示数据列表和执行增删改查操作。在这个组件中,我们将使用Vuex来管理数据状态和执行异步操作,使用Axios来进行HTTP请求。 ```html <template> <div> <h1>Todo List</h1> <form @submit.prevent="addTodo"> <input v-model="newTodo" placeholder="Add new todo" /> <button type="submit">Add</button> </form> <ul> <li v-for="(todo, index) in todos" :key="todo.id"> <input type="checkbox" :checked="todo.completed" @change="toggleTodo(todo)" /> <span>{{ todo.text }}</span> <button @click="removeTodo(index)">Remove</button> </li> </ul> </div> </template> <script> import { mapGetters, mapActions } from 'vuex'; export default { computed: { ...mapGetters(['todos']), }, methods: { ...mapActions(['addTodo', 'removeTodo', 'toggleTodo']), }, data() { return { newTodo: '', }; }, }; </script> ``` 接下来,我们使用Vue Router来创建路由和路由组件,用于在不同的URL路径下显示不同的组件。在这个例子中,我们将创建一个路由,用于显示TodoList组件。 ```javascript import Vue from 'vue'; import VueRouter from 'vue-router'; import TodoList from './components/TodoList.vue'; Vue.use(VueRouter); const routes = [ { path: '/', component: TodoList, }, ]; const router = new VueRouter({ mode: 'history', routes, }); export default router; ``` 最后,我们使用Vuex来管理TodoList组件的状态和操作。我们将创建一个store对象,包含state、mutations、actions和getters。 ```javascript import Vue from 'vue'; import Vuex from 'vuex'; import axios from 'axios'; Vue.use(Vuex); const store = new Vuex.Store({ state: { todos: [], }, mutations: { SET_TODOS(state, todos) { state.todos = todos; }, ADD_TODO(state, todo) { state.todos.push(todo); }, REMOVE_TODO(state, index) { state.todos.splice(index, 1); }, TOGGLE_TODO(state, todo) { todo.completed = !todo.completed; }, }, actions: { async fetchTodos({ commit }) { const response = await axios.get('/api/todos'); commit('SET_TODOS', response.data); }, async addTodo({ commit }, text) { const response = await axios.post('/api/todos', { text, completed: false }); commit('ADD_TODO', response.data); }, async removeTodo({ commit }, index) { await axios.delete(`/api/todos/${state.todos[index].id}`); commit('REMOVE_TODO', index); }, async toggleTodo({ commit }, todo) { await axios.patch(`/api/todos/${todo.id}`, { completed: !todo.completed }); commit('TOGGLE_TODO', todo); }, }, getters: { todos: state => state.todos, }, }); export default store; ``` 现在我们已经完成了使用Vue组件化、Vue路由、Vuex和Axios实现增删改查功能的示例代码。当然,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值