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:'[email protected]',
                  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

相关推荐
学渣y1 小时前
React文档-State数据扁平化
前端·javascript·react.js
njsgcs1 小时前
画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf
前端·javascript·笔记
Kay_Liang3 小时前
深入解析JavaScript变量作用域:var、let、const全攻略
开发语言·javascript·const·var
进取星辰6 小时前
23、Next.js:时空传送门——React 19 全栈框架
开发语言·javascript·react.js
究极无敌暴龙战神X6 小时前
hot100-子串-JS
javascript·数据结构·算法
星空寻流年11 小时前
css3伸缩盒模型第二章(侧轴相关)
javascript·css·css3
GalenWu12 小时前
对象转换为 JSON 字符串(或反向解析)
前端·javascript·微信小程序·json
zwjapple12 小时前
“ES7+ React/Redux/React-Native snippets“常用快捷前缀
javascript·react native·react.js
数据潜水员12 小时前
插槽、生命周期
前端·javascript·vue.js