规范化 Redux 使用

这篇具有很好参考价值的文章主要介绍了规范化 Redux 使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装&配置 redux 和 react-redux

npm install --save redux react-redux

index.js

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { Provider } from 'react-redux'
import store from './store'

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Provider store={store} >
      <App />
    </Provider>
  </React.StrictMode>
);

配置仓库 store

src 目录下 新建 store 文件夹,并创建 index.js 文件

import { legacy_createStore as createStore } from "redux";
import reducer from "./reducers/root.reducer";

const store = createStore(reducer)

export default store

store目录下新建 reducers 文件夹

reducers 文件夹下创建 root.reducer.js 文件, modal.reducer.js 文件、todoList.reducer.js 文件

这里引入我们采用合并 reducer,以方便我们更好的使用 redux

modal.reducer.js

const defaultstate = {
  isShowModal: false
}

export default (state = defaultstate, action) => {
  switch (action.type) {
    case "changeModalShow":
      return {
        ...state,
        isShowModal: action.value
      }
    default:
      return state;
  }
}

todoList.reducer.js

const defaultstate = {
    list: [1,2,3,4,5,6]
}

export default (state = defaultstate, action) => {
    switch(action.type) {
        case "changeList":
            return {
                ...state,
                list: action.value
            }
        default:
            return state;
    }
}

combineReducers 方法可以让我们将多个 reducer 文件合并

root.reducer.js

import { combineReducers } from 'redux'
import ModalReducer from './modal.reducer'
import TodoListReducer from './todoList.reducer'

export default combineReducers({
  modal: ModalReducer,
  todoList: TodoListReducer
})

页面使用store

App.js

import React from 'react';
import './App.css';
import TotoList from './components/TotoList';
import Modal from './components/Modal';

function App() {
  return (
    <div className="App">
      <TotoList />
      <Modal />
    </div>
  )
}

export default App;

src 目录下新建 components 文件夹

创建 TotoList.js、 Modal.js 两个文件

Modal.js

import React from 'react'

const Modal = () => {

  const styles = {
    width: '400px',
    height: '400px',
    left: '50%',
    top: '50%',
    position: 'absolute',
    transform: 'translate(-50%, -50%)',
    background: 'aliceblue',
    display: 'block'
  }

  return (
    <div>
      <button>显示</button>
      <button>隐藏</button>
      <div style={styles}></div>
    </div>
  )
} 

export default Modal
引入 connect
import { connect } from 'react-redux'
export default connect(mapStateToProps, mapDispatchToProps)(Modal)
配置 mapStateToProps
const mapStateToProps = state => ({
  isShowModal: state.modal.isShowModal
})
配置 mapDispatchToProps

store 文件下 创建 const 文件夹,并创建 modal.const.js 文件

modal.const.js

export const CHANGEMODALSHOW = 'changeModalShow'

store 文件下 创建 actions 文件夹,并创建 modal.actions.js 文件

import { CHANGEMODALSHOW } from '../const/modal.const'

export const changeModalShow = value => ({type: CHANGEMODALSHOW, value})

Modal.js

import React from 'react'
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import * as modalActions from '../store/actions/modal.actions'

const Modal = ({isShowModal, changeModalShow}) => {

  const styles = {
    width: '400px',
    height: '400px',
    left: '50%',
    top: '50%',
    position: 'absolute',
    transform: 'translate(-50%, -50%)',
    background: 'aliceblue',
    display: isShowModal ? 'block' : 'none'
  }

  const handelShowModal = () => {
    changeModalShow(true)
  }

  const handelHiddenModal = () => {
    changeModalShow(false)
  }

  return (
    <div>
      <button onClick={handelShowModal}>显示</button>
      <button onClick={handelHiddenModal}>隐藏</button>
      <div style={styles}></div>
    </div>
  )
} 

const mapStateToProps = state => ({
  isShowModal: state.modal.isShowModal
})

const mapDispatchToProps = dispatch => bindActionCreators(modalActions, dispatch)

export default connect(mapStateToProps, mapDispatchToProps)(Modal)

todoList.js 的写法一样的文章来源地址https://www.toymoban.com/news/detail-703176.html

到了这里,关于规范化 Redux 使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据清洗与规范化详解

    数据处理 流程,也称数据处理管道,是将原始数据转化为有意义的信息和知识的一系列操作步骤。它包括数据 采集 、 清洗 、 转换 、 分析 和 可视化 等环节,旨在提供有用的见解和决策支持。 那我常用的山海鲸可视化软件举例,在数据可视化中数据处理是可视化展示前非

    2024年02月07日
    浏览(32)
  • PyTorch 中的批量规范化

    批量规范化(Batch Normalization)是深度学习中一种常用的技术,用于加速训练过程并提高模型的稳定性和泛化能力。以下是PyTorch中批量规范化的一些关键知识点: 1.nn.BatchNorm1d 和 nn.BatchNorm2d: 2.PyTorch提供了nn.BatchNorm1d用于在全连接层后应用批量规范化,以及nn.BatchNorm2d用于在卷

    2024年01月15日
    浏览(47)
  • 【第一章 先导篇】1. 规范化的学习模型

    举例:什么是编码?

    2024年04月25日
    浏览(25)
  • 在 Visual Studio 中规范化文件编辑

    生成了对应的 .editorconfig 文件,存放在仓储的根目录。即对整个仓储所有的用 VS 作为 IDE 编辑的项目生效。 同时支持子目录有自己的 .editorconfig 文件,可以选择继承更高级别父目录的配置,也可以不继承。 该文件将应用到模板项目当中。除非特殊情况需根据项目定制编码规

    2024年02月17日
    浏览(32)
  • uniapp接口请求api封装,规范化调用

    封装规范和vue中的差不多,都是统一封装成一个request对象,然后在api.js里面调用。 先创建一个utils文件夹,然后里面创建一个request.js,代码如下: 在api文件夹中封装对应的index.js文件,然后导入request对象: 在对应的vue或者react中引入并调用:

    2024年02月08日
    浏览(32)
  • idea的git的规范化提交插件

    1.在idea中安装git的插件git commit Template插件 打开IDEA-选择菜单栏的File-Settings,选择Plugins-MarkPlace输入Git Commit Template进行搜索,点击apply, 2.在日常commit的 时候按照如下操作进行:在commit的页面,点击下图的图标后,根据实际情况选择或者输入相关内容,该插件会根据其填入的内

    2024年02月12日
    浏览(50)
  • React项目规范:目录结构、根目录别名、CSS重置、路由、redux、二次封装axios

    先创建项目: create-react-app 项目名 ,然后换个图标,换个标题 配置 jsconfig.json :这个文件在Vue通过脚手架创建项目时自动生成, React是没有自动生成, jsconfig.json 是为了让vs code的代码提示更友好, 按需求决定是否配置; 对 src 文件夹的目录进行初始化: 1、安装craco: npm install

    2023年04月08日
    浏览(38)
  • 【前端】React快速入门+Redux状态管理

    本文旨在记录react的基础内容,帮助有需要的同学快速上手,需要进一步了解描述更加稳妥和全面的信息,请查阅官方文档 官方文档点击这里进行跳转 react框架 vue,react,angular这几种主流前端框架使用频率较高…本质还是js库。 React.js是一个用于构建用户界面的JavaScript库。它由

    2024年02月12日
    浏览(35)
  • 数据库期末复习(10)数据库规范化理论

     函数依赖(概念):FD 范式分解(评估准则): 模式分解(工具): 如何衡量一个数据库好不好:准确 高效 如果一个数据库设计的不好的话的,会带来哪些问题 删除异常 数据冗余 为什么会导致出现上方的问题:数据依赖 数据依赖的分类:完全依赖,部分依赖,传递依赖和相应的定义 A

    2024年02月08日
    浏览(42)
  • 【数据库原理 • 四】数据库设计和规范化理论

    前言 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前互联网+与大数据,一切都建立

    2023年04月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包