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

React入门必学:120行TodoList状态管理精讲 待办清单(Todo List)是理解前端状态管理最基础、最典型的交互场景。其核心在于掌握状态如何定义、更新与同步到UI——这正是React函数组件中useState与useEffect协同工作的本质原理。通过极简实现,可深入理解受控组件、不可变更新、key机制及localStorage持久化等关键技术价值,广泛应用于任务管理、个人效率工具、教学沙盒及轻量级协作系统。本文以一个无构建依赖、单文件可运行的React Todo项目为载体,聚焦状态流闭环与工程化避坑,帮助开发者建立对React运行时行为的直觉认知。 阅读详情

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用于数据传输

在App.js文件中引入
import {Provider} from ‘react-redux’
import store from ‘./store’

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import {Provider} from 'react-redux'
import store from './store'

ReactDOM.render(
<Provider store={store}>
   <App />
</Provider>   , document.getElementById('root'));

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

并使用将包裹起来

在store文件中建立总的reducer文件

4.在src中建立组件

1.在src中建立todos文件,其中分别建立actionCreator文件用来书写行为代码以及tdos的单独reducer文件
2.在store文件的index.js文件中引入

import {createStore} from 'redux';
import reducer from './reducer'

var store =createStore(reducer);

export default store;

并在store文件夹中的reducer文件中引入

import {createStore} from 'redux';
import reducer from './reducer'

var store =createStore(reducer);

export default store;

5.实现todolist

(1).index文件中引入

import actionCreator from './actionCreator'
import {connect} from 'react-redux'

(2).在class Todos extends Component中书写

class Todos extends Component {
      add=(e)=>{
          if(e.keyCode===13){
              if(e.target.value.trim()==="")return;
              this.props.addAction(e.target.value);
              e.target.value=""
          }
      }

      delete(id){
          let result = window.confirm("是否删除")
          if(result===true){
           this.props.delAction(id)
          }
      }

      write(id){
        var text =  prompt("请输入要修改的内容")
         if(text !==""){
           this.props.writeAction(text,id)
         }
      }

    render() {
        let todos = this.props.TodosMod.todos
        return (
            <div>
                <input  type="text" onKeyUp={this.add}/>
                <ul>
                    {
                    todos.map((item)=>{
                        return <li key={item.id} >{item.text} 
                        <button onClick={()=>{this.delete(item.id)}}>删除</button> 
                        <button onClick={()=>{this.write(item.id)}}>修改</button></li>
                    })
                 }
                </ul>
            </div>
        )
    }
}

render中的u组件绑定数据,并在其中写好事件。
最后再导出

var mapState=(state)=>state
export default connect(mapState,actionCreator)(Todos);

(3).actionCreator文件中写入

export default {
    addAction(text){
        return{
            type:"ADD",
            text
        }
    },
    delAction(id){
        return{
            type:"DEL",
            id
        }
    },
    writeAction(text,id){
        return{
        type:"WRITE",
        text,
        id
        }
    }
}

(4).最后在reducer文件中写入

const initialState = {
    todos:[
        {
            "id":1,
            "text":"hello twohorses"
        }
    ]
}

export default (state = initialState,{type,text,id})=>{
    switch(type) {
        case "ADD":
            var newState = {...state};
            newState.todos.push({
                id:Date.now(),
                text
            })
            return newState;
        case "DEL":
            newState = {...state};
            newState.todos.splice(text,1);
            return newState;

        case "WRITE":
            newState = {...state};
            newState.todos.filter((item)=>{
                if(id === item.id){
                  item.text = text  
                }
                return newState;
            })
            return newState;

     default :
         return state
    }
}

在这里插入图片描述最终效果

react+react-redux+redux实现的todolist案例 react+react-redux+redux实现的todolist案例,适合初学者学习,又想通过redux进军react-redux可以尝试 立即下载

相关推荐

react-todolist:react+redux实现todolist功能

简介 利用vue和react分别实现toDoList简易功能。参考。 Vue.js 、、。 启动 # initial directory vue init webpack my-project # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minification npm run build # build for production and view the bundle analyzer report npm run build --report React.js ,,。 启动 # ES6->ES5 yarn add babel-core babel-preset-es2015 babel-p

使用react -redux及react脚手架实现增删ToDoList

一、首先,来看下redux的官方图解 二、根据这张图的步骤,我们来一步一步实现ToDoList(记得下载redux和react-redux第三方依赖) 1、我们需要对入口文件进行更改 import React from 'react' import ReactDOM from 'react-dom' //Todolist redux版组件 //将store 作为一个 prop 传给 Provider 组件,这样,<Provider>中包含的所有组件都能使用this.props来引入store

weixin_45868552的博客 354

如何设计QR反激变换器

摘要:本文分析了基于GaN技术的PD适配器市场现状,重点探讨了准谐振反激变换器(QR Flyback)的工作原理及设计方法。文章首先介绍了反激变换器的三种工作模式(CCM、DCM、CRM/QR)及其特点,指出QR模式通过谷底开通技术能显著降低开关损耗。随后以65W适配器为例,详细阐述了变压器参数设计流程,包括匝比确定、原边电感计算和绕组匝数设计等关键步骤。文章强调QR反激变换器凭借高效率、小体积和低成本优势,已成为20W-65W PD适配器的主流拓扑方案,配合GaN技术进一步提升了功率密度和便携性。

m0_62868254的博客 1496

Redux实现简易TodoList的增加、删除(全)

Redux实现简易TodoList的增加、删除(全) Tip:文件建立及ui代码可见本系列上一篇博客:React安装Ant-Design并初步使用绘制UI界面 完整代码会在最后贴出哦~~<( ̄︶ ̄)↗[GO!] 一、给input添加事件 import React, { Component } from "react"; import 'antd/dist/antd.css' import ...

weixin_42260975的博客 523

2023西工大NOJ (C语言版) 完结!!!

代码均可AC,不含解析。

annesede的博客 8万+

CSAPP performance lab

CSAPP 深入理解计算机系统的performance Lab

weixin_46091531的博客 1253

react 中的redux实现数据的添加删除

1、新建store 新建component 在store新建index.js代码如下: import {createStore} from "redux"; const store = createStore(); export default store; 2、在store里创建文件夹reducer,在reducer里新建文件todo.js文件代码如下: const defaultS...

weixin_44195250的博客 1880

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 714

spring-boot redux-thunk增删改查

环境搭建 以spring-boot react redux增删改查为基础代码,在redux分支的基础上,集成redux-thunk中间件,实现增删改查 检出代码 git clone https://gitee.com/qinaichen/react-crud.git cd react-crud 切换分支 git checkout redux 创建新分支 git checkout -...

编码小栈 450

嵌入式铁头山羊stm32:一文总结

本文是一篇STM32嵌入式开发的综合知识总结,涵盖了STM32基础概念、GPIO、通信协议、外设驱动等核心内容。文章首先介绍了STM32的基本概念和型号含义,然后详细讲解了GPIO的8种工作模式及实验案例。接着重点阐述了USART、I2C、SPI三种通信协议的原理和实现方法,包括硬件连接、编程接口和实验应用。此外还介绍了OLED显示原理、中断系统、定时器、ADC转换等关键技术,每个模块都配有对应的实验案例和代码实现参考。文章内容全面系统,既包含理论知识,又提供实践指导,适合作为STM32开发的快速参考手册。

古泽汉书的博客 2785

科研级YOLOv8 Neck革新:BiFPN双向特征金字塔赋能,让多尺度融合更高效的实战指南

在文件夹下新建BiFPN.py,将上述BiFPNLayer和BiFPN类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义Neck模块。

m0_64661770的博客 153

Redux的基础使用入门(一)

基本概念和API redux: 商店:store,存放state的容器 状态:state,就是应用中需要使用的数据 动作:action,定义数据操作 通知:dispatch,发送操作请求 函数:reducer,处理数据的业务逻辑 首先创建商店(store) // 得到

keji_123的博客 462

锂电池寿命预测 | Python实现基于LSTM长短期记忆神经网络的锂电池寿命预测

锂电池寿命预测 | Python实现基于LSTM长短期记忆神经网络的锂电池寿命预测

算法如诗的博客 1902

React第三方组件5(状态管理之Redux的使用④TodoList下)

本教程总共6篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章!1、React第三方组件5(状态管理之Redux的使用①简单使用)---2018.03.202、React第三方组件5(状态管理之Redux的使用②TodoList上)---2018.03.213、React第三方组件5(状态管理之Redux的使用③TodoList中)---2018.03.224、R...

oKeYue的博客 323

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

useReducer实现todoList ts规范书写

typing/index.ts export type Content = string; export type ID = string; export interface Todo { id: ID; content: Content; complete: boolean; } export type TodoList = Array<Todo>; export enum Actions { ADD_TODO = "ADD_TODO", REMOVE_TODO = "

宏斌的博客 1223

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

react-redux实现todolist增加删除功能,解决JavaScript事件绑定问题

react-redux实现todolist增加删除功能,解决JavaScript事件绑定问题 1.创建TodoList组件 import React, { Component } from &quot;react&quot;; import { connect } from &quot;react-redux&quot;; class TodoList extends Component { render() { const...

ai_wenkeyan的博客 1008

React+Redux实现简单的Todolist(增、删、完成、localstorage)

React+Redux实现简单的Todolist,功能包括:通过回车与增加按钮对于事件的增加,点击删除按钮的单删功能,点击按钮使事件在完成与未完成间转换,一键删除所有事项,localstorage的本地保存。

weixin_43648936的博客 971

【案例】使用React+redux实现一个Todomvc

最流行的状态管理工具之一。(类似于 vue中的vuex)Redux和React是两个独立的工具/三个核心概念🌟action(动作/行为):【对象格式】描述要做的事(例如:登陆、退出、增删改查等等…)reducer(函数):【函数格式 function reducer(state = 0,action){ } 】更新状态store(仓库):整合action(动作)和reduce(函数)store分配要做的事action给reducer🍦 添加事项🍦 删除事项🍦 完成or未完成事项。

随心所欲的便笺 1015

React+Redux+AntD搭建TodoList应用

最近一直在学React,它是一款前端的,用于构建用户界面的JavaScript库,它的好处就是将界面拆分成一个个组件,然后进行组合,比较适合于模块化编程。但是组件之间的数据管理却没有一个好的解决方案,特别是对于组件之间层次比较深,数据之间传递还是很麻烦的,所以有了Redux,它主要职责就是多页面数据存储,使用时候会构建一个中心store,所有数据都会以state形式存放于store中,界面中只需要...

夏的专栏 863

React结合Redux实现Todolist

redux工作流程store.js 建立redux状态仓库import { createStore, combineReducers } from 'redux'; import {add, deleter} from './Reducers/TodoList'; /** * 第一个参数是reducers 第二个参数是默认状态 * 所以还得建立reduce...

博客简介 399

Todolist(redux版本)

1.创建一个项目 npm i create-react-app -g create-react-app 项目名 2.在项目中下载路由和redux npm i react-router-dom redux 3.在入口文件引入Provider传递store import {Provider} from 'react-redux' import store from './store' React...

qq_46398665的博客 185

react入门学习---Todolist的实现(便签输入增删)

主要学习了react的数据渲染方式,这和vue差别很大;

一粒程序米 824

【第三章-react 应用(基于 react 脚手架)】

1.脚手架: 用来帮助程序员快速创建一个基于 xxx 库的模板项目;2. 提供了一个用于创建 项目的脚手架库: ; 3.项目的整体技术架构为:; 4.使用脚手架开发的项目的特点:模块化,组件化,工程化。创建项目成功: 页面效果: favicon.icon ------ 网站页签图标(偏爱图标) index.html --------主页面 logo192.png ------- logo 图 logo512.png ------- logo 图 manifest.json ----- 应用加壳的配置文件

nunumaymax的博客 489

React入门实战:TodoList项目开发全解析

组件化开发与状态管理是现代前端框架的核心概念。React通过虚拟DOM和响应式编程实现高效UI渲染,其单向数据流特性特别适合构建可维护的交互式应用。在工程实践中,TodoList作为经典案例,能系统训练组件拆分、状态提升和生命周期管理等关键技术。本文以React函数组件为例,详解如何使用useState实现任务增删改查,结合useEffect处理本地存储持久化,并通过React.memo优化渲染性能。项目涵盖表单处理、列表渲染、筛选功能等常见场景,是掌握React开发模式的绝佳起点。

weixin_33423874的博客 193
Twohooo
博客等级 码龄7年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值