Rudex个人总结

简介: Redux:Redux 是一个状态管理工具(类似于Vuex),因为项目的逐渐壮大,需要管理的状态也就越来越多,因此需要Redux这样的状态管理工具对我们的状态进行一个管理,方便对数据的调用,降低管理难度。

Redux:

Redux 是一个状态管理工具(类似于Vuex),因为项目的逐渐壮大,需要管理的状态也就越来越多,因此需要Redux这样的状态管理工具对我们的状态进行一个管理,方便对数据的调用,降低管理难度。

通过上面这张图可以看出,在没有Redux的时候,各组件之间状态的传递是十分麻烦的,但是使用了Redux后,组件有需求的时候,只需要去store里去取,就可以了,与此同时,通过特定的方法去改变store里存储的状态的时候,其他组件从store里取的状态也会发生变化,自动改变。


Redux的工作流程以及组成部分

Redux官方给的流程图:


从图中可以看出,我们Redux由四个部分组成:

Component : React 组件,

Action : 组件的任务派发

Store : 状态仓库

Reducers : 状态创建者


文件夹的创建

index.js – store的创建

import {createStore} from 'redux' //从redux中引入 createStore 创建一个状态管理仓库
import reducer from './reducer' //引入 状态仓库创建者
const store = createStore(reducer) // 通过创建者来创建一个 store 仓库
export default store

reducer.js – 创建store的幕后黑手

import {CHANGE_CHECKED} from './actionTypes'
const defaultState = {
  data:[]
}
// reducer.js 默认抛出一个函数
export default (state = defaultState,action)=>{
  //state 就是状态 , action 是组件派发的动作
  let newState = {...state} //修改state的里的值只能通过拷贝一份state 进行修改,不可以直接修改state
  switch(action.type){
    case CHANGE_CHECKED:
      return newState 
    default:
            break;
  }
  return state
}

actionTypes.js --是对组件 dispatch 派发的 action.type 的一个存储

export const CHANGE_CHECKED = ‘changeClick’ //用大写进行保存


假设一有个 TabNav 组件

TabNav .js

import React, { Component } from 'react';
import {CHANGE_CHECKED} from './store/actionTypes.js'
import store from '../../store'
class TabNav extends Component {
    constructor(props) {
        super(props);
        this.state = { 
          data:[]
         }
        store.subscribe(this.listenState) //监听store 的 state的变化
    }
    render() { 
        return ( 
            <div>
            </div>
         );
    }
    componentDidMount(){
        store.dispatch({
            type:CHANGE_CHECKED,
            num:1
        })
    }
    listenState = ()=>{
        this.setState(store.getState()); //重新获取数据
    }
}
export default TabNav;

总结:

store.dispatch() //传入一个action 然后reducer进行接收

store.getState()//获取store的状态

store.subscribe() // 监听state的变化

目录
相关文章
|
JSON 前端开发 JavaScript
前端常用的加密方式
前端常用的加密方式
588 0
|
9月前
|
弹性计算 运维 安全
轻量 vs ECS:阿里云轻量应用服务器与ECS云服务器有什么区别?2026最新手动整理
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境等轻量场景,操作简单、成本低;ECS功能全面、弹性强,支持高并发、集群部署,适合企业级应用。选型关键看业务规模与技术需求。
486 4
|
10月前
|
机器学习/深度学习 人工智能 监控
基于深度学习的河道垃圾检测系统设计(YOLOv8)
本项目基于YOLOv8设计河道塑料瓶智能检测系统,融合深度学习与PyQt5界面开发,实现图像、视频及实时摄像头输入下的垃圾识别。具备高精度、实时性强、操作简便等优点,支持模型训练、推理与结果可视化,推动AI在环保治理中的工程化应用,助力河道环境智能监测与可持续管理。
455 4
|
9月前
|
人工智能 监控 架构师
智能体来了(西南总部)深度拆解:AI调度官与AI Agent指挥官的Prompt工程
“智能体来了(西南总部)”标志着大模型从技术底座迈向应用落地的关键转折。本文剖析多智能体协同架构,定义未来两大核心职业:AI Agent指挥官与AI调度官,揭示如何通过高维Prompt工程与RAG闭环,实现任务自动分派、资源高效协同,推动AGI在西南产业带的规模化落地,重构企业生产力逻辑。(238字)
390 4
|
9月前
|
人工智能 机器人 vr&ar
AI 技术在英语口语的应用
AI赋能英语口语学习,迈向沉浸式交互新时代。2026年,AI实现多模态对话、音素级纠音、情绪识别与情境自适应,数字人老师实时模拟真实交流场景,结合AR实现“边用边学”。通过高频短时练习,助力用户自然输出地道表达,全面提升口语能力。#AI技术 #AI应用
|
Java 开发工具 Android开发
Android与iOS开发环境搭建全解析####
本文深入探讨了Android与iOS两大移动操作系统的开发环境搭建流程,旨在为初学者及有一定基础的开发者提供详尽指南。我们将从开发工具的选择、环境配置到第一个简单应用的创建,一步步引导读者步入移动应用开发的殿堂。无论你是Android Studio的新手还是Xcode的探索者,本文都将为你扫清开发道路上的障碍,助你快速上手并享受跨平台移动开发的乐趣。 ####
|
编解码 分布式计算 自然语言处理
LLM用于科学假设生成:探索与挑战
产生新颖的科学假设和科研方向,是科学发现的重要前提;大语言模型生成科学假设已有不少探索,但仍面临诸多挑战
597 9
|
人工智能 自然语言处理 算法
可自主进化的Agent?首个端到端智能体符号化训练框架开源了
【8月更文挑战第13天】近年来,AI领域在构建能自主完成复杂任务的智能体方面取得重大突破。这些智能体通常基于大型语言模型,可通过学习适应环境。为简化设计流程,AIWaves Inc.提出智能体符号化学习框架,使智能体能在数据中心模式下自我优化,以推进通向通用人工智能的道路。该框架将智能体视作符号网络,利用提示、工具及其组合方式定义可学习的权重,并采用自然语言模拟反向传播和梯度下降等学习过程,指导智能体的自我改进。实验显示,此框架能有效促进智能体的自主进化。尽管如此,该框架仍面临高质量提示设计及计算资源需求高等挑战。论文详情参见:https://arxiv.org/pdf/2406.18532。
807 58
|
存储 缓存 编解码
计算机硬件学习教程
【7月更文挑战第26天】
1199 2
|
SQL 安全 Java
SQL注入攻防:保护你的数据库免受黑客攻击
【8月更文挑战第31天】面对日益复杂的网络攻击,数据库安全至关重要。SQL注入作为黑客常用手法,通过植入恶意代码非法访问数据库,严重威胁信息安全。本文详解SQL注入原理及其防御策略,涵盖不当输入处理导致的漏洞利用,以及通过预编译查询和权限限制等手段加强防护。使用如Java的PreparedStatement可有效避免SQL注入,保障数据安全。共同构建安全网络,抵御SQL注入风险。
794 0

热门文章

最新文章