当前位置: 首页 > news >正文

企业所得税征收方式/网站改版seo建议

企业所得税征收方式,网站改版seo建议,图片制作在线,网站建设费Redux 作用 集中式管理react、vue、angular等应用中多个组件的状态,是一个库,不单单可用于react,只是更多的用于react中 模型图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaFD3raR-1682994570670)(img/re…

Redux

作用

集中式管理react、vue、angular等应用中多个组件的状态,是一个库,不单单可用于react,只是更多的用于react中

模型图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaFD3raR-1682994570670)(img/redux模型图.png)]

三个核心

action

  1. 作用:action是把数据从应用传到store的有效载荷,是store数据的唯一来源
  2. 创建
import { INCREMENT, DECREMENT } from './constant'export const incrementAction = (data) => {return { type: INCREMENT, data }
}export const decrementAction = (data) => {return { type: DECREMENT, data }
}
  1. 页面上的使用:通过分发action操作数据
import { incrementAction, decrementAction } from './redux/actions'export default class index extends Component {increment = () => {const { value } = this.selectNumberstore.dispatch(incrementAction(value))}
}
  1. 异步action:同步action中返回值为对象,而异步action中返回值为函数,其中一般会调用同步action
export const incrementAsyncAction = (data, delay) => {return (dispatch) => {setTimeout(() => {dispatch(incrementAction(data))}, delay)}
}

reducer

  1. 作用:reducer指定了应用状态的变化如何响应action并发送到store中
  2. 特征:本质是一个纯函数,接收两个参数,之前的状态(preState)、动作对象(action)。第一次被调用时,preState为undefined
  3. 创建
import { ADD_PERSON } from '../constant'export default function personReducer(preState, action) {if (preState === undefined) {preState = [{id: '001',name: 'Tom',age: 23}]}// 从action中取出type和dataconst { type, data } = actionswitch (type) {case ADD_PERSON:// 没有对preState进行push或unshift操作,因为redux默认若返回值和之前状态一致,则不更新页面return [data, ...preState]default:return preState}
}
  1. 纯函数
    只要是同样的输入,必定得到同样的输出。遵循以下约束
  • 不得改写参数
  • 不能调用I/O的API
  • 不能调用Date.new()或者Math.random()等不纯的方法,因为每次会得到不一样的结果

store

  1. 作用:将action和reducer联系在一起,维持应用中的状态
  2. 特征:一个应用只有一个store。当需要拆分数据处理逻辑时,应该使用多个reducer
  3. 创建
    import { legacy_createStore } from 'redux'
    import countReducer from './reducer'export default legacy_createStore(countReducer)
    
    当使用异步action后,需对store进行修改,使用redux-thunk和中间件支持异步action,修改后的store文件如下:
    import { legacy_createStore, applyMiddleware } from 'redux'
    // 用于支持异步action
    import thunk from 'redux-thunk'
    import countReducer from './reducer'export default legacy_createStore(countReducer, applyMiddleware(thunk))
    
  4. 页面上取值:
render() {return (<div><h1>当前求和为{store.getState()}</h1>&nbsp;</div>)
}

react-redux

定义

react-redux其实是Redux的官方React绑定库,其中封装了一些Redux与React连接的操作,可以是Redux的使用更加简单

模型图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ww8vq9Ro-1682994570671)(img/react-redux模型图.png)]

规则

  1. 所有的UI组件被一个容器组件包裹,它们是父子关系
  2. UI组件不与Redux进行操作,而是由容器组件与Redux进行操作,可以使用Redux的任意api
  3. 容器组件会传给UI组件如下数据:
    1. 状态,即mapStateToProps()
    2. 操作状态的方法,即mapDispatchToProps()

基础使用(见04-react-redux基础使用)

建立容器组件时的注意点

  1. 容器组件与UI组件通过react-redux中的connect进行连接,传递mapStateToProps和mapDispatchToProps
  2. mapStateToProps()
    1. 用于传递状态
    2. 返回一个对象
    3. react-redux在调用该函数时已经传入了state
    4. 此处的值传入UI组件中,UI组件可使用this.props.xxx拿到对应的值
    5. 用到的store在根目录中通过Provider包裹App组件并传入store的方式获取
      const root = ReactDOM.createRoot(document.getElementById('root'))
      root.render(<React.StrictMode><Provider store={store}><App /></Provider></React.StrictMode>
      )
      
  3. mapDispatchToProps()
    1. 用于传递操作状态的方法
    2. 返回一个对象,对象的key自定义,value是一个方法
    3. 注意简写方式

建立UI组件时的注意点

  1. 不直接参与Redux的使用
  2. 使用this.props.xxx拿到容器组件传来对应的值

融合UI组件与容器组件

开发时将UI组件与容器组件进行融合后放到一个文件中(见,05-融合UI组件与容器组件)

多个组件间的数据共享(重要,见06-react-redux数据共享)

  1. 完善各个组件的action和reducer
  2. 合并reducer,如下
import { combineReducers } from 'redux'
import countReducer from './reducers/count'
import personReducer from './reducers/person'/*** 合并Reducer* 使用combineReducers合并Reducer,key为自定义,value为reducer*/
export default allReducer = combineReducers({count: countReducer,persons: personReducer
})

注意:合并reducer后导致state变化,变为一个新的对象,对于组件mapStateToProps中对应的state需要通过.属性的方式取到
3. 修改store,使用合并后的reducer

import { legacy_createStore, applyMiddleware } from 'redux'
// 用于支持异步action
import thunk from 'redux-thunk'
// 合并后的reducer
import allReducer from './reducers/index'export default legacy_createStore(allReducer, applyMiddleware(thunk))

相关文章:

Redux

Redux 作用 集中式管理react、vue、angular等应用中多个组件的状态&#xff0c;是一个库&#xff0c;不单单可用于react&#xff0c;只是更多的用于react中 模型图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaFD3raR-1682994570670)(img/re…...

Nacos配置中心的详解与搭建

Namespace 简介 用于进行租户粒度的配置隔离&#xff0c;不同的命名空间下&#xff0c;可以存在相同的 Group 或 Data ID 的配置 配置Namespace 点击nacos的命名空间——点击新建命名空间 开发环境【dev】测试环境【test】正式环境【prod】 DataID 简介 Data ID 通常用于…...

Java入门教程||Java 封装||Java 接口

Java 封装 在面向对象程式设计方法中&#xff0c;封装&#xff08;英语&#xff1a;Encapsulation&#xff09;是指&#xff0c;一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障&#xff0c;防止该类的代码和数据被外部类定义的代码…...

微软开源AI修图工具让老照片重现生机

GitHub - microsoft/Bringing-Old-Photos-Back-to-Life: Bringing Old Photo Back to Life (CVPR 2020 oral) 支持划痕修复&#xff0c;以及模型训练。 Old Photo Restoration (Official PyTorch Implementation) Project Page | Paper (CVPR version) | Paper (Journal vers…...

什么是 Docker?它能用来做什么?

文章目录 什么是云计算&#xff1f;什么是 Docker&#xff1f;虚拟化技术演变特点架构镜像&#xff08;Image&#xff09;仓库&#xff08;Registry &#xff09;容器&#xff08;Container&#xff09; 应用场景 什么是云计算&#xff1f; 云计算是一种资源的服务模式&#x…...

生成器的创建方式(py编程)

1. 生成器的介绍 根据程序员制定的规则循环生成数据&#xff0c;当条件不成立时则生成数据结束。数据不是一次性全部生成处理&#xff0c;而是使用一个&#xff0c;再生成一个&#xff0c;可以节约大量的内存。 2. 创建生成器的方式 生成器推导式yield 关键字 生成器推导式…...

百胜中国:未来将实现强劲增长

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 收入分析与未来展望 在过去的三年里&#xff0c;百胜中国&#xff08;YUMC&#xff09;的收入一直受到疫情导致的旅行限制和封锁的影响。为了应对疫情造成的业务中断&#xff0c;该公司开始专注于外卖业务&#xff0c;并将…...

【Celery】任务Failure或一直超时Pending

编写背景 task进入队列后&#xff0c;部分任务出现Failure或者一直Pending,且业务代码没有报错。 运行环境 celery配置 from celery import Celery broker redis://:127.0.0.1:6379/1 backend redis://:127.0.0.1:6379/2 app Celery(brokerbroker,backendbackend,includ…...

【严重】VMware Aria Operations for Logs v8.10.2 存在反序列化漏洞(CVE-2023-20864)

漏洞描述 VMware Aria Operations for Logs前身是vRealize Log Insight&#xff0c;VMware用于处理和管理大规模的日志数据产品。 VMware Aria Operations for Logs 8.10.2版本中存在反序列化漏洞&#xff0c;具有 VMware Aria Operations for Logs 网络访问权限的未经身份验…...

java实现乘法的方法

我们都知道&#xff0c;乘法运算的核心思想就是两个数相乘&#xff0c;如果能将乘法运算转化成一个加数的运算&#xff0c;那么这个问题就很容易解决。比如我们要实现23的乘法&#xff0c;首先需要定义两个变量&#xff1a;2和3。我们将这两个变量定义为一个变量&#xff1a;2x…...

SSD目标检测

数据集以及锚框的处理 数据集&#xff1a; 图像&#xff1a;&#xff08;batch_size , channel , height , width&#xff09; bounding box: &#xff08;batch_size , m , 5&#xff09; m: 图像中可能出现的最多边界框的数目 5&#xff1a; 第一个数据为边界框对应的种…...

SpringBoot项目结构及依赖技术栈

目录 1、pom.xml文件配置说明 2、SpringBoot项目结构说明 3、入门案例关键配置说明 &#x1f308; 前面我们学习了SpringBoot快速入门案例&#xff0c;本节我们通过POM文件和项目结构分析两部分内容了解下关于SpringBoot的一些配置说明&#xff0c;以便全面了解SpringBoot项…...

crash怎么分析kdump core文件

kdump是Linux内核的一种机制&#xff0c;可以在出现系统崩溃时自动生成一个内存转储文件(core file)&#xff0c;也称为crash dump。这个core文件包含了系统当时的内存状态和各个进程的调用栈信息&#xff0c;可以帮助分析和定位崩溃的原因。 要分析kdump core文件&#xff0c…...

微内核与宏内核的区别和联系

微内核与宏内核的区别和联系 一、什么是内核&#xff1f;二、微内核和宏内核的区别 一、什么是内核&#xff1f; 内核是计算机操作系统的核心程序&#xff0c;它负责整个OS功能的调控。 二、微内核和宏内核的区别 微内核(Micro)宏内核(Monolithic/ Macro)地址空间内核服务和用…...

都什么年代了,还在用Excel和ACCESS做应用系统?快来学Eversheet

表格用的越久&#xff0c;就越头疼 稍微有规模的企业&#xff0c;各种表格都会多如牛毛&#xff0c;一堆堆的&#xff0c;有时候这里一张&#xff0c;那里一张&#xff0c;容易整乱&#xff0c;更容易丢失。不管你是用WPS还是用Excel&#xff0c;有些问题你还是依旧解决不了。…...

【JAVAEE】JAVA数据库连接(JDBC)

1.什么是JDBC&#xff1f; Java数据库连接&#xff0c;&#xff08;Java Database Connectivity&#xff0c;简称JDBC&#xff09;是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口&#xff0c;提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsyste…...

Nestjs全网最佳翻译-概况-守卫-Guards

守卫 带上装饰器 Injectable() 并实现了 CanActivate 接口的类&#xff0c;就是守卫。 守护只做一件事情。他们根据运行时的某些条件&#xff08;如权限、角色、ACL等&#xff09;来决定一个给定的请求是否会被路由处理程序处理。这通常被称为授权。在传统的Express应用程序中…...

【软考网络管理员】2023年软考网管初级常见知识考点(3)- 网络体系结构

【写在前面】也是趁着五一假期前再写几篇分享类的文章给大家&#xff0c;希望看到我文章能给软考网络管理员备考的您带来一些帮助&#xff0c;5月27号也是全国计算机软件考试统一时间&#xff0c;也就不用去各个地方找资料和代码了。紧接着我就把我整理的一些资料分享给大家哈&…...

javascript正则表达式大括号、中括号、小括号的作用以及应用场景

在JavaScript正则表达式中&#xff0c;大括号 {}、中括号 [] 和小括号 () 都有不同的作用和应用场景。 大括号 {} 在正则表达式中&#xff0c;大括号 {} 表示重复次数。以下是一些常见的应用场景&#xff1a; {n}&#xff1a;精确匹配出现的次数&#xff0c;例如 \d{3} 匹配…...

5年测试老鸟总结,自动化测试的实施到落地,看这一篇足够...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…...

通达信顾比倒数线指标公式,信号不漂移

顾比倒数线是由技术派大师戴若顾比发明的&#xff0c;该指标利用三个重要的价格来判断入场或离场时机&#xff0c;可用于盘后制定下一个交易日的操作计划。此外&#xff0c;顾比倒数线还可以用于补充验证其他指标。 在编写顾比倒数线选股公式之前&#xff0c;需要先了解顾比倒…...

网络安全: CIDR无类别路由

网络安全&#xff1a; CIDR无类别路由 CIDR是无类别路由&#xff0c;出现CIDR的原因是因为ipv4的地址被使用完客&#xff0c;CIDR的出现暂缓了ipv4用完的速度。 原本的ipv4很刻板&#xff0c;网络号分成8位&#xff0c;16位&#xff0c;24位作为掩码&#xff0c;也就是 xxx.0…...

NetMQ | 发布订阅时使用含通配符的Topic

NetMQ | 发布订阅时使用含通配符的Topic 文章目录 NetMQ | 发布订阅时使用含通配符的Topic前言通配符如何使用通配符通配符的作用结束语 前言 今天我来介绍一下NetMQ发布订阅时如何使用含通配符的Topic&#xff0c;让我们能够更加灵活地订阅消息。 什么是Topic? 在NetMQ中&am…...

行为型模式-模板方法模式

模板方法模式 概述 在面向对象程序设计过程中&#xff0c;程序员常常会遇到这种情况&#xff1a;设计一个系统时知道了算法所需的关键步骤&#xff0c;而且确定了这些步骤的执行顺序&#xff0c;但某些步骤的具体实现还未知&#xff0c;或者说某些步骤的实现与具体的环境相关…...

IPsec中IKE与ISAKMP过程分析(快速模式-消息1)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息2&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息3&#xff09;_搞搞搞高傲的博客…...

PostgreSQL 数据类型转换

各种数据类型&#xff08;日期/时间、integer、floating point和numeric&#xff09;转换成格式化的字符串及反过来从格式化的字符串转换成指定的数据类型&#xff0c;在实际操作中经常遇到。下面总结了一些常用的函数。 日期操作函数 函数返回类型描述实例to_char(timestamp…...

【Java笔试强训 1】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f9be;&#x1f9be;&#x1f9be; 目录 一、选择题 二、编程题 &#x1f525;组队竞…...

你买票了吗?五一火车票发售量创历史新高,车票总发售2209万张票

五一劳动节已经成为了除春节国庆节外最隆重的节日&#xff0c;是全国性的庆祝节日。在这个节日里&#xff0c;人们可以通过旅游、购物、娱乐等方式来放松身心&#xff0c;充满活力地迎接新的挑战。同时&#xff0c;五一假期也成为了国内外客流量最大的旅游黄金周之一&#xff0…...

DiffUtil的使用

RecyclerView的DiffUtil用于计算并更新RecyclerView中数据集的变化。通过使用DiffUtil&#xff0c;我们可以避免完全重新加载整个列表&#xff0c;并且只会更改必要的视图。 以下是DiffUtil的基本用法&#xff1a; 创建一个继承自DiffUtil.Callback的类来计算差异。在这个类中…...

【Python】【进阶篇】18、Django初始化项目环境精讲

目录 18、Django初始化项目环境精讲1. 完成数据库迁移2. PyMySQL模块的使用3. migrate与makemigrations命令详解1) makegrations生成数据库迁移文件2) migrate执行数据库迁移命令3) 完成数据库迁移总结 18、Django初始化项目环境精讲 上一节中&#xff0c;我们完成了对 settin…...