react的TodoList增删改

React之Todolist 1 阅读详情

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="react4.aspx.cs" Inherits="react4" %>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        ul{
            list-style: none;
        }
        .container{
            margin-left: 200px;
            margin-top: 100px;
        }
        button{
            width: 100px;
            height: 20px;
            margin-left: 10px;
        }
        input{
            margin-top: 10px;
        }
    </style>
</head>
<body>
     <p>返回文章: <a href="https://www.cnblogs.com/6long/p/6044503.html">react的TodoList增删改)</a></p>
    <div id="container" class="container"></div>


    <script type="text/jsx">

        // TodoList 组件是一个整体的组件,最终的React渲染也将只渲染这一个组件
        // 该组件用于将『新增』和『列表』两个组件集成起来,并且存储 arr 的数据
        var TodoList = React.createClass({
            // 初始化数据
            getInitialState: function () {
                return {
                    //数组存储
                    arr: [{
                        title:"早餐",
                        content:"牛奶",
                        time:"10"
                    },
                        {
                            title:"午餐",
                            content:"肉奶",
                            time:"13"
                        },
          
                        {
                            title:"晚餐",
                            content:"水饺",
                            time:"20"
                        }
        
        ]
                };
            },
            // 接收一个传入的数据,并将它实时更新到组件的 state 中,以便组件根据数据重新render
            // 只要改变了 state ,react自动执行 reader 计算

            //任务标题、内容、时间,三部分需要用到数组中的对象
            handleChange: function (rows) {
         
                this.setState({
    //                arr: new Mask(title,content,time)
                    arr:rows
                });
    //            console.log(arr)
            },
            render: function () {
                return (
                        <div>
                            {/*
                             AddList 组件,传入两个属性onAdd,todo
                             todo将 todolist 的数据传入到组件,当新增时,更新todolist数据
                             onAdd -  将 handleChange 函数传入到组件,新增时,用它来处理最新的todolist数据
                             */}
                            <AddList onAdd={this.handleChange} todo={this.state.arr} />
                            {/*
                             集成 DeleteList 组件,传入两个属性 onDel,todo
                             todo将 todolist 的数据传入到组件,当删除时,更新todolist数据
                             onDel - 将 handleChange 函数传入到组件,删除时,用它来处理最新的todolist数据
                             */}
                            <DeleteList onDel={this.handleChange} todo={this.state.arr} />
                        </div>
                );
            }
        });
        /*
        * ddList 组件用于新增数据,需要todo 和 onAdd 两个属性
        * 当从 input 中获取数据时,将新数据 push 到todo中,
        * 然后使用 onAdd 调用 TodoList 的 handleChange 来更新state,然后react自动render
        * */


    //    增加和查询可以合并到一起用
        var AddList = React.createClass({
    //        增加数据模块
            handleAdd: function (e) {
                e.preventDefault();
                // 通过 refs 获取相信input元素,然后获取输入的内容
                var titleDOM = this.refs.title.getDOMNode();
                var titleValue = titleDOM.value.trim();
                var contentDOM = this.refs.content.getDOMNode();
                var contentValue = contentDOM.value.trim();
                var timeDOM = this.refs.time.getDOMNode();
    //            时间强行转化位数字,方便后续排序
                var timeValue = Number(timeDOM.value.trim());

     

                // 获取传入的todolist数据
                var rows = this.props.todo || [];
    //            console.log("ok")
                    if (titleValue !== '' && contentValue !== '' && timeValue !== '') {
                        // 更新数据,并使用 onAdd 更新到 TodoList 组件的 state 中
                        if(!isNaN(timeValue)){
    //                        把对应的每个input的值通过对象保存到数组中
                            rows.push(
                                    {
                                        title:titleValue,
                                        content:contentValue,
                                        time:timeValue
                                    }
                            );
                            this.props.onAdd(rows);
                        }else{
                            alert("日期只能为数字(单位:天),请重新输入!");
                        }

                    }else{
                        alert("您有信息未填写,请核对后再【添加】");
                    }
    //            把值保存到数组后,及时清空input,用户体验好
                titleDOM.value = contentDOM.value = timeDOM.value= '';
            },

            /*              搜索数据模块
            * 点击搜索的时候,先把所有className的input的display设置为none隐藏
            * 数组中遍历的时候,把符合条件的,设为 显示        *
            * */
            handleSearch:function(e) {
                e.preventDefault();

               <%-- console.log(this.refs.title.getDOMNode())--%>
                this.props.todo.map(function (item, i) {
                            if(item.time == 10){
                                 alert("10")
                             };
                  <%--  console.log(item.time + "......"+ i);--%>
                })
            },
            render: function () {
                return (
                    // 用回车键 和 点击事件,触发 handleAdd 事件,用户体验好

                        <form onsubmit={this.handleAdd}>
                            <input type="text" ref="title" id="title" placeholder="请输入任务标题" autoComplete="off" />
                            <input type="text" ref="content" id="content" placeholder="请输入内容" autoComplete="off" />
                            <input type="text" ref="time" id="time" placeholder="请输入到期时间(单位:天)" autoComplete="off" />
                            <button className="add" onClick={this.handleAdd} >添加</button>
                            <button className="search" onClick={this.handleSearch}>搜索/排序</button>
                        </form>
                );
            }
        });

        /*      DeleteList 完成删除 修改功能
        *可以删除某一项内容,有 noDel,todo两个属性
        *遍历todo的内容,生成数据列表和删除按钮
        *对某一项执行删除时,将todo中的数据删除
        * 然后通过 onDel 事件调用 TodoList 的 handleChange 来更新state,然后react自动render
        *修改值时用的中间变量
        */
        var titleV,contentV,timeV;
        var DeleteList = React.createClass({

            //删除事件绑定
            handleDel: function (e) {
                var delIndex = e.target.getAttribute('data-key');
              

                // 更新数据,并使用 onDel 更新到 TodoList 的 state 中,以便 React自动render
                this.props.todo.splice(delIndex, 1);
                this.props.onDel(this.props.todo);
            },
    //        修改事件绑定
            titleChange: function (e) {
    //            console.log(e.target.value)
                titleV = e.target.value;
    //            console.log(titleV)
            },
            contentChange: function (e) {
                contentV = e.target.value;
            },
            timeChange: function (e) {
                timeV = e.target.value;
            },
            /*
            * 修改的时候,用户先直接修改数据
            * 然后点击确认修改的时候在完成对数组值的修改操作
            * */
            handleAlt: function (e) {
                e.preventDefault();
                var delIndex = e.target.getAttribute('data-key');
                this.props.todo[delIndex].title = titleV;
                this.props.todo[delIndex].content = contentV;
                this.props.todo[delIndex].time = timeV;
                console.log(this.props.todo)

            },
            render: function () {
    //            console.log(this.props.todo.map)
                return (
                        <ul id="todo-list">
                            {
                                // {/* 遍历数据 */}
                                this.props.todo && this.props.todo.map(function (item, i) {
                                    return (
                                            <li ref="tip">
                                                <input defaultValue={item.title} onChange={this.titleChange} className="val"/>
                                                <input defaultValue={item.content}  onChange={this.contentChange} className="val"/>
                                                <input defaultValue={item.time}  onChange={this.timeChange} className="val"/>
                                                <button className="destroy" onClick={this.handleDel} data-key={i}>delete</button>
                                                <button className="alter" onClick={this.handleAlt} data-key={i}>Alt</button>
                                            </li>
                                    );
                                }.bind(this)) // {/* 绑定函数的执行this - 以便 this.handleDel */}
                            }
                        </ul>
                );
            }
        });

        React.render(<TodoList />, document.getElementById('container'));

    </script>
</body>
</html>

效果截图

 

用REACT 实现简易TODOLIST的增删改查 一.思路 1、UI界面怎么实现;UI(User Interface) 2、功能代码实现: (1)添加数据 (2)查询数据,展示 (3)删除数据 (4)修改数据 3、数据持久化操作 localStorage.setItem('key',value) var value = localStorage.getItem('key') this.setState(obj,faction),修改s... 阅读详情

相关推荐

React_TodoList实现增删改查功能

TodoList实现增删改查 一、功能代码需要实现: 添加数据 查询数据,展示 删除数据 修改数据

l_nine的博客 1452

初探react,用react实现一个todoList功能

初探react,用react实现一个todoList功前言一、react基础1. react简介2. 开发环境搭建3. 工程目录文件简介4. react中最基础的JSX语法二、使用react编写TodoList功能1. 页面构思2. React中的响应式设计思想和事件绑定3. 实现TodoList新增删除功能(1)新增功能(2)删除功能三、对TodoList功能进行进阶操作1. JSX语法细节补充(1)自动转义(2)光标聚焦2. 拆分组件与组件之间的传值3. TodoLi

moandaylab 4110

react函数组件 todolist 增删改查

name: ‘今天是星期一’,name: ‘今天是星期二’,name: ‘今天是星期三’,name: ‘今天是星期四’,alert(‘不能重复添加’)

weixin_45567934的博客 385

21、react 制作一个 todoList 组件

上一篇博文我们说了 react 脚手架创建并使用一个组件,OK,那么重点来喽,每个框架学习的必做案例,todoList 功能。

“跟他人学,和自己比” 1500

STM32实战——七段数码管动态扫描技术详解

本文详细解析了STM32控制七段数码管的动态扫描技术,包括硬件连接、CubeMX配置及编程实现。通过分时复用原理和优化代码逻辑,实现稳定显示效果,并解决亮度不均、闪烁等常见问题。适合嵌入式开发者快速掌握STM32数码管驱动技术。

weixin_42561143的博客 279

从命令到对话:LLM如何重塑车载语音交互与软件定义汽车体验

自动语音识别和自然语言处理是智能交互的核心基础技术,它们使机器能够理解和响应人类语音指令。其原理在于通过声学模型和语言模型将声音信号转化为文本,再解析文本背后的用户意图。这项技术的价值在于提供了一种自然、高效且能解放双手的人机交互方式,极大地提升了在特定场景(如驾驶)下的安全性与便利性。随着技术演进,其应用场景已从简单的命令控制扩展到复杂的多轮对话和跨域任务执行。当前,软件定义汽车的架构变革为车载语音提供了统一的控制平台,而大型语言模型的引入则带来了范式革命,使其从功能触发器进化为真正的智能任务执行者。本文

weixin_42669344的博客 563

React实现Todolist

一个todolist基本的功能点包括: 点击复选框标记完成或者未完成,且相应的文字出现删除线 从列表中移除item 添加item 首先它是由todolist title 、todolist、和addtodo三部分组成。由于todolist title 和addtodo比较简单,在这里只将todolist拆分成组件。 创建一个ListItem组件。含有一个render方法 class List...

csdn_zsdf的博客 9883

U24时钟信号上升下降沿出现非单调性--简单分析

交换机U24时钟信号上升下降沿出现非单调性--简单分析

qq_45185504的博客 1132

react案例1:todoList

1、拆分组件、实现静态组件,注意:className,style的写法2、动态初始化列表,如何确定将数据放在那个组件的state中?-----某个组件使用:放在自身的state中-----某些组件使用:放在他们共同的父组件state中(官方称此操作为:状态提升)3.关于父子之间通信:1.【父组件】给【子组件】传递数据:通过props传递2.【子组件】给【父组件】传递数据:通过props传递,要求父提前给子传递一个函数。

zhaoyin1994的博客 777

AD从原理图到PCB超详细教程

我在学习AD的时候,看了网上很多教程,但是东西很杂,有很多条理不清而且废话很多,所以相信大家学习的时候也是遇到一样的困难。我就特地写一篇帖子,整理了一下AD从画原理图开始一直到画完PCB文件的所有步骤,一方面是供大家参考学习,另一方面可以方便我自己学习记忆更加深刻。我用的版本是AD16中文版,大家用新的版本AD20或者AD22应该操作都是差不多的。

人生寂寞如雪 18万+

航空发动机轴承故障诊断

《航空发动机主轴承故障诊断的挑战与HIT数据集研究》 摘要: 航空发动机主轴承作为关键部件,其可靠性直接影响飞行安全。然而,主轴承故障诊断面临信号信噪比低、传输路径复杂、故障类型多样、变工况运行等挑战。哈尔滨工业大学团队开发的HIT数据集为研究提供了真实工况下的实验数据,包含正常、内圈和外圈故障三种状态,具有高仿真度和强挑战性特点。研究表明,传统诊断方法在该数据集上准确率仅71-85%,突显了诊断难度。团队提出的ISONet新方法通过输入空间过参数化技术,将诊断准确率提升至99%以上,为航空发动机轴承故障诊

tyutwuxuan的博客 996

react实现todolist 增删改查

react实现todolist 增删改查 实现需求:todolist实现增删改查; 实现思路:react组件划分。因为用的是localstorage封装了数据库各个组件之间数据库不能同步,所以设计组件的思路是在父组件里进行增删改查后的渲染操作(setstate),父组件app下有增删改查操作,因此有四个子层级组件,考虑到刚开始做删除功能的时候对li有操作,所以把对li的操作(删除),ui样式...

weixin_33885676的博客 2483

500道C++面试高频题解析(附答案、实战示例与进阶追问)

本文提供500道C++面试高频题的详细解析,涵盖基础概念到进阶应用,包括面向对象编程、内存管理、现代C++特性、并发编程等核心考点。每道题配有实战示例和进阶追问,帮助开发者突破八股文局限,掌握解决实际问题的能力,适合准备C++技术面试的工程师系统复习。

weixin_29002595的博客 311

入门react简易TodoList实现增删改查

TODOList,数据增删改查的操作 操作思路 UI界面怎么实现;UI(User Interface) 功能代码实现: (1)添加数据 (2)查询数据,展示 (3)删除数据 (4)修改数据 数据持久化操作 localStorage.setItem(‘key’,value) var value = localStorage.getItem(‘key’) 修改state属性 this....

weixin_46031235的博客 1063

YOLOv8冻结层的迁移学习 全网首发

在调用时会创建trainer此时的模型配置更新了,冻结了个p。

qq_42693842的博客 6586

【大模型】一图看懂3D因果卷积!

本文将系统性地介绍从1D到3D的因果卷积原理,通过直观的动图演示帮助读者理解其工作机制,并重点探讨3D因果卷积在大规模视频生成中的独特价值和应用前景。

xian0710830114的专栏 2199

使用React实现TodoList实现增删改查

使用React实现TodoList实现增删改查 TodoList编写思路 React --》 组件 --》 3大属性(props,state,refs) TODOList,数据增删改查的操作 思路: 1、UI界面怎么实现;UI(User Interface) 2、功能代码实现: (1)添加数据 (2)查询数据,展示 (3)删除数据 (4)修改数据 3、数据持久化操作 localStorag...

IT__zz的博客 1872

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

React_todoList增删改查/redux_todoList增删改查

主要知识点:组件通信(父子传参,子父传参,非父子传参{兄弟传参}) App.js import React, { Component } from 'react' import ToDoContent from "./toDoContent" import Add from "./add" import "./style.css" class App extends Component { ...

M106588L的博客 494

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

使用react-redux实现todolist的增删改

1.创建一个react项目 (1).npm i create-react-app -g (2).create-react-app xxx(项目名称) (3).cd xxx (4.).npm start 启动项目后会浏览器会自动打开页面 出现react的标志即为打开成功 2.安装react-redux 运行npm i redux react-redux --save-dev 3.建立store用于数...

TwoHooooo的博客 459

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

react实现todolist的增删改查

以todolist为例 目录如下 app.js import React, { PureComponent } from 'react' import Input from './components/Input' import List from './components/List' import Total from './components/Total' import Mask from './components/Mask' import { bus as $bus } from './

lxs19930928的博客 864

react ToDoList实现方法 增删改查 ,hook的使用

react中实现todolist 全选/反选 hook的使用

cheguang03的博客 504

react完整版Todolist,增删改查

应用代码如下 import React from "react"; class Todolist extends React.Component { constructor(props) { super(props) this.state = { list: [{ id: 11, context: 'aaa', ischecked: false,

qq_38980678的博客 461

TodoList React+NODE链接mysql数据库完成增删改查DEMO

遇到的难点: 跨域:原因是通过gulp启动的React项目等于是从本地路径访问网路的NODE于是会造成跨域问题 解决:在后面加上了跨域访问设置 res.writeHead(200, {'Content-Type': 'text/plain; charset=utf8','Access-Control-Allow-Origin':"*"}); TodoList var React =...

jinqianwang的博客 1865
上一篇: vue.js增删改查2
下一篇: SQL查询结果行转列
wanglei_samrtfish
博客等级 码龄15年 38粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值