7.21一日总结

1.redux中action传参

        a.传参

                        在时间中,第二个参数就是传递的值,num就是传递的参数

                        onClick={()=>{store.dispatch({type:'del',num:1})}}

        b.接收参数

const reducer = function (state = { ...data }, action) {switch (action.type) {case "del":console.log(action.num)break;default:}return state
}

2.模块化

        a.分组件写reducer,进行暴露

        b.写根组件root.js使用combineReducers对组件进行合并

//合并方法
import { combineReducers } from "redux";
//两个分组件
import numReducer from "./numReducer";
import todoReducer from "./todoReducer";
//放在root中合并
const rootReducer=combineReducers({numR:numReducer,todos:todoReducer
})export default rootReducer;

        c.在index.js中挂载

import { createStore } from "redux";
import rootReducer from "./rootReducer";
const store=createStore(rootReducer);export default store;

        d.在组件中的使用方法

import Context from "../../context";
import { useContext,useState } from "react";
function ReduxPage(){const {store}=useContext(Context);const {numR}=store.getState();const [n,setN]=useState(1);console.log(store.getState().numR.num)// 组件第一次更新完毕后,将组件更新的方法放入到store事件池中const update=()=>{setN(n+1)}store.subscribe(update);return (<div>//属性使用<p>{numR.num}--{store.getState().numR.num}</p>{/* <p>{todosR.num}</p> */}//方法使用<p><button onClick={()=>store.dispatch({type:'todos/add',n:10})}>add</button><button onClick={()=>store.dispatch({type:'todos/reduce'})}>reduce</button></p></div>)
}export default ReduxPage;

3.react-redux

        a.安装react-redux   npm install react-redux

        b.在store里添加深拷贝,实现页面同步响应

                         state=JSON.parse(JSON.stringify(state))

const numReducer=function (state={num:10,count:1000,list:[]},action){//深拷贝state=JSON.parse(JSON.stringify(state))switch(action.type){case "add":state.num+=action.n;console.log(state.num);break;case "reduce":state.num--;console.log(state.num);break;case "getList":state.list=action.data;break;default:}return state;
}
export default numReducer;

        c.在页面中使用

                    useSelector接收数据

                    useDispatch接收方法

 

import { useSelector,useDispatch } from "react-redux";
import { fetchData } from "../../store/actions";
function ReactReduxPage2(){const {num,list}=useSelector(state=>state.numR);const dispatch=useDispatch();console.log(list);return (<div><h3>{num}</h3><button onClick={()=>dispatch({type:'add',n:100})}>addFn</button><button onClick={()=>dispatch({type:'reduce'})}>reduceFn</button><button onClick={()=>dispatch(fetchData())}>fetchData</button><ul className="list">{list.map(item=><li key={item.id}>{item.title}</li>)}</ul></div>)
}
export default ReactReduxPage2;

 

4.redux-thunk(异步请求的中间键)

        a.安装   npm install redux-thunk

        b.在store的index中引入   import thunk from 'redux-thunk'

                                                 import { applyMiddleware} from "redux";

        c.在store的index中建立中间键   const store=create(rootreducer,applyMiddleware(thunk))

        d.在异步请求文件使用

export const fetchData=()=>{console.log(123);return async (dispatch,getState)=>{   console.log(456);//    fetch("https://cnodejs.org/api/v1/topics?tab=good").then(res=>res.json()).then(res=>{//         console.log(res);//     }).catch(res=>{})let res=await fetch("https://cnodejs.org/api/v1/topics?tab=good").then(res=>res.json());console.log(res);dispatch({type:'getList',data:res.data})}
}

        e.在组件中使用

//引入
import { fetchData } from "../../store/actions";
//调用
<button onClick={()=>dispatch(fetchData())}>fetchData</button>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是剪贴板劫持-剪贴板劫持教程

目录 前言 什么是剪贴板劫持如何避免剪贴板劫持&#xff1f;如何执行剪贴板劫持&#xff1f; 总结 前言 我来写剪贴板劫持教程。 什么是剪贴板劫持 剪贴板劫持是一种危险的攻击技术&#xff0c;借助该攻击者可以控制受害者的剪贴板并将恶意代码粘贴到目标机器中&#xff0c;…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前信息和状态&#xff1b;通过语音识别模块对当前垃圾种类进行语音识别&#xff1b; 通过蜂鸣器进行声光报警提醒垃圾桶已满&#xff1b;采用舵机控制垃圾桶打开关闭&#xff1b;超声波检测当前垃圾桶满溢程度&#xff1…

认识spring项目的创建 和 从spring中进行Bean对象的存取

前言 本篇简单介绍如何创建spring项目&#xff0c;如何存储到spring容器中&#xff0c;如何从容器中获取Bean对象&#xff0c;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 创建spring项目2. 将Bean对象存…

RS485/RS232自由转ETHERNET/IP网关rs485和232接口一样吗

你是否曾经遇到过这样的问题&#xff1a;如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢&#xff1f; 远创智控的YC-EIP-RS485/232通讯网关&#xff0c;自主研发的ETHERNET/IP从站功能&#xff0c;完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线…

服务器数据恢复-ESX SERVER无法连接到STORAGE的数据恢复案例

服务器数据恢复环境&#xff1a; 某公司信息管理平台&#xff0c;数台VMware ESX SERVER虚拟机共享一台IBM某型号存储。 服务器故障&#xff1a; VC报告虚拟磁盘丢失&#xff0c;管理员ssh到ESX中执行fdisk -l命令查看磁盘&#xff0c;发现STORAGE已经没有分区表了。重启设备后…

WAIC2023:图像内容安全黑科技助力可信AI发展

目录 0 写在前面1 AI图像篡改检测2 生成式图像鉴别2.1 主干特征提取通道2.2 注意力模块2.3 纹理增强模块 3 OCR对抗攻击4 助力可信AI向善发展总结 0 写在前面 2023世界人工智能大会(WAIC)已圆满结束&#xff0c;恰逢全球大模型和生成式人工智能蓬勃兴起之时&#xff0c;今年参…

C++第五讲

思维导图 续&#xff1a;myString类完善 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myString { priva…

社区发现相关算法

目录 **社区检测与聚类****社区检测技术**1. Louvain 社区检测[2]2. Surprise社区检测[3]3. 莱顿社区检测[4]4. Walktrap 社区检测[5] 结论5.LPA 标签传播6.K-L算法7.GN算法8.Newman快速算法 SlashBurn: Graph Compression and Mining beyond Caveman CommunitiesReferences 摘…

WebSocket笔记

1. websocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接W…

【微信小程序】分别对确认和取消按钮设置不同的样式,添加自定义的样式类

给确认和取消按钮设置不同的微信小程序样式&#xff0c;你可以使用<button>标签的class属性来添加自定义的样式类&#xff0c;并在对应的样式类中定义不同的样式。 以下是一个示例代码&#xff0c;演示如何给确认按钮和取消按钮设置不同的样式&#xff1a; <button …

【EXCEL】通过url获取网页表格数据

目录 0.环境 1.背景 2.具体操作 0.环境 windows excel2021 1.背景 之前我用python的flask框架的爬虫爬取过豆瓣网的电影信息&#xff0c;没想到excel可以直接通过url去获取网页表格内的信息&#xff0c;比如下图这是电影信息界面 即将上映电影 (douban.com) 通过excel操作&…

GO学习之切片操作

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 文章目录 GO系列前言一、什么是切片&#xff08;和数组有什么关系&#xff09;二、切片基本操作2.1 切片定义2.2 添加元素2.3 删除元素2.4 遍历2.5 自定…

商品信息管理-亿发商品进销存管理系统,批发行业零售门店免费试用

众所周知&#xff0c;批发零售行业面临着商品品类繁多、品牌众多、商品信息量庞大等挑战。同时&#xff0c;商品售价波动频繁&#xff0c;还需要管理商品批次&#xff0c;避免积压过期。针对这些传统批发零售行业的管理难题&#xff0c;加快行业数字化转型成为解决之道&#xf…

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 1. 前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有…

目标检测——FasterRCNN原理与实现

目录 网络工作流程数据加载模型加载模型预测过程RPN获取候选区域FastRCNN进行目标检测 模型结构详解backboneRPN网络anchorsRPN分类RPN回归Proposal层 ROIPooling目标分类与回归 FasterRCNN的训练RPN网络的训练正负样本标记RPN网络的损失函数训练过程实现正负样本设置损失函数 …

Apache Doris (三十):Doris 数据导入(八)Spark Load 3- 导入HDFS数据

目录 1. 准备HDFS数据 2. 创建Doris表 3. 创建Spark Load导入任务 4. 查看导入任务状态 进入正文之前&#xff0c;欢迎订阅专题、对博文点赞、评论、收藏&#xff0c;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; 宝子们订阅、点赞、收藏不迷路&#xff01;抓紧…

echarts实现渐变折线图并添加点击事件

折线图点击事件代码: let myChart = this.$echarts.init(document.getElementById(trendBoxECharts))myChart.getZr().on(click, params => {console.log(params)let pointInPixel = [params.offsetX, params.offsetY]if (myChart.containPixel(grid, pointInPixel)) {//点…

【JAVA】云HIS系统功能菜单知识(一)

一、云HIS特色 云HIS滚动消息栏&#xff1a;质控消息、住院时长、药库结转、患者入院、医嘱停止、新开医嘱、门诊用药不良、出院审核、药品调拨、排班提醒、药品库存、药品过期、药品临期等帮助医生、护士和相关管理人员实时接收院内消息并作出处理。 二、云HIS功能菜单 【预约…

表关系分析与创建

表关系的分类 &#xff08;一&#xff09;多表查询一对一&#xff1a;models.OneToOneField(to_fieldid,toAuthordatil)一对多&#xff1a;&#xff08;外键设置唯一性&#xff09;models.ForeignKey(toPublish,to_fieldid)多对多&#xff1a;自动生成第三张表models.ManyToMa…

8、gateway使用和原理

一、什么是Spring Cloud Gateway 1、网关简介 网关作为流量的入口&#xff0c;常用的功能包括路由转发&#xff0c;权限校验&#xff0c;限流等。 2、Gateway简介 Spring Cloud Gateway 是Spring Cloud官方推出的第二代网关框架&#xff0c;定位于取代 Netflix Zuul。相比 …