欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 5.8 react状态管理

5.8 react状态管理

2025/5/14 20:53:03 来源:https://blog.csdn.net/t200718/article/details/147807739  浏览:    关键词: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: userReduceruserSlice: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 toolkitimport {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 toolkitimport {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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词