5.8 react状态管理

react 模块化样式与状态管理

  • 状态管理 redux redux-toolkit

  • 模块化样式

1.状态管理库 redux redux-toolkit

安装

复制代码
  pnpm install @reduxjs/toolkit react-redux

乱传,整个项目 进行数据的共享

  • 创建状态的模块文件 store/userSlice.jsx
复制代码
  // 只是 用户模块的共享数据的Slice 
  ​
  import { createSlice } from '@reduxjs/toolkit'
  ​
  // 整个模块暴露给store仓库 进行配置使用
  export const userSlice = createSlice({
          name:'user',
          // 数据
          initialState:{
              num:1000,
              userInfo:{
                  id:1000,
                  name:'John',
                  email:'john@gmail.com',
                  tell:'16231565844',
                  nickName:'葬爱家族',
                  address:'中国北京'
              }
          },
          // 方法
          reducers:{
              changeUserInfo(state,{payload}){
                  state.userInfo = {...payload}
              },
              // 页面传递给修改方法的数据  放在了 {type:'xxx',payload:页面传递实参} 中的payload中
              changeUserInfoTell(state,{payload}){
                  state.userInfo.tell = payload
              }
          }
  })
  ​
  // 将所有的修改方法 暴露给页面 进行使用
  export const {changeUserInfo,changeUserInfoTell} = userSlice.actions
  ​

2.创建 整个仓库的配置文件 store/index.jsx

复制代码
  
  // 整个store仓库的配置文件 
  import {  configureStore } from '@reduxjs/toolkit'
  import {userSlice} from './userSclie'
  ​
  const store = configureStore({
      reducer:{
          // 模块化
          // user: userReducer
          userSlice:userSlice.reducer
      }
  })
  ​
  // 将store仓库整体配置暴露给main.jsx  全局注入使用(整个项目生效)
  export default store;

3.全局注入 store配置 main.jsx

复制代码
  
  ​
  import { createRoot } from 'react-dom/client'
  import './index.css'
  import App from './App.jsx'
  // 全局注入store  redux toolkit
  import {Provider} from 'react-redux'
  import  store from './store'
  createRoot(document.getElementById('root')).render(
   <Provider store={store}>
      <App /> 
   </Provider>
     
  )
  ​

4.页面使用 获取数据useSelector 修改数据 useDispatch

复制代码
  
  ​
  import { createRoot } from 'react-dom/client'
  import './index.css'
  import App from './App.jsx'
  // 全局注入store  redux toolkit
  import {Provider} from 'react-redux'
  import  store from './store'
  createRoot(document.getElementById('root')).render(
   <Provider store={store}>
      <App /> 
   </Provider>
     
  )
  ​

2.模块化CSS 有作用域的CSS

在react 中所有的 样式文件 写的样式 默认都是 全局样式

  • 修改less 文件后缀
复制代码
  
  index.modules.less 
复制代码
  .login{
      width: 100%;
      height: 100%;
      background-color: #2d3a4b;
      display: flex;
      justify-content: center;
      align-items: center;
  ​
  }
  .form-box{
      width: 400px;
  }
  • 页面使用
复制代码
  
  import style from './index.module.less'
复制代码
  
    <div className={style.login}>
          <div className={style['form-box']}>

​ : TS 5-10

相关推荐
知识分享小能手14 分钟前
React学习教程,从入门到精通,React 使用属性(Props)创建组件语法知识点与案例详解(15)
前端·javascript·vue.js·学习·react.js·前端框架·vue
摸鱼的春哥1 小时前
前端程序员最讨厌的10件事
前端·javascript·后端
牧羊狼的狼5 小时前
React 中的 HOC 和 Hooks
前端·javascript·react.js·hooks·高阶组件·hoc
知识分享小能手6 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
luckys.one6 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
魔云连洲6 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
mCell7 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
weixin_437830948 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
gnip10 小时前
JavaScript事件流
前端·javascript
小菜全10 小时前
基于若依框架Vue+TS导出PDF文件的方法
javascript·vue.js·前端框架·json