当前位置: 首页 > wzjs >正文

用dw如何做网站首页长沙网站优化公司

用dw如何做网站首页,长沙网站优化公司,湖北省建设厅网站查询,在网上卖东西怎么操作Redux Redux是一个流行的JavaScript状态管理库,通常用于React等前端框架结合使用。Redux 的设计思想是让应用的状态变得可预测、可追踪、易于调试和测试。 Redux的核心l理念 单一数据源:整个应用的状态被存储在一个唯一的Store对象中,所有…

Redux

Redux是一个流行的JavaScript状态管理库,通常用于React等前端框架结合使用。Redux 的设计思想是让应用的状态变得可预测、可追踪、易于调试和测试。

Redux的核心l理念

  • 单一数据源:整个应用的状态被存储在一个唯一的Store对象中,所有组件都从这个Store读取数据
  • 状态只读:唯一改变状态的方法时触发action,不能直接修改state
  • 使用纯函数来执行修改:Reducer处理器是函数,接收当前的store和action,返回新的state,不产生副作用

Redux的核心概念

  • Store:是Redux的核心,它是一个包含整个应用程序状态的对象。Redux应用只有一个单一的Store,通过createStore函数创建。提供了以下的方法
    - getStore():获取当前状态
    - dispatch(action):触发状态更新
    - subscribe(listener):监听状态变化
  • Action一个普通的JavaScript对象,用于描述状态的变化,它必须有type字段,表示动作的类型,可以有其他自定义数据
const incrementAction = {type: 'INCREATE',payload: 1
}
  • Reducer::是一个纯函数,接受当前stateaction作为参数,并返回一个新的状态。Reducer必须保持纯函数特性,既不直接修改原状态,而是返回一个新的状态对象
function counterReducer(state = 0,action){switch(action.type){case 'INCREATE':return state + action.payload;default:return state}
}
  • Dispatch:用于触发action,通过调用store.dispatch(action)。React会将action传递给Reducer,从而更新状态
  • Subscribe:订阅Store的状态,通常用于UI更新

Redux的工作流程

  • 组件通过dispatch发送一个action
  • Store接收到action,调用reduce
  • Reducer根据action的类型和数据,返回新的state
  • Store更新state,通知订阅的组件重新渲染

React Redux

React Redux是官方推荐的React与Redux结合使用的库,主要作用是让React组件可以方便的访问和操作Redux的全局状态。它极大的简化了React项目中全局状态的管理和组件间的数据通信

React Redux的核心功能

  • Provider组件:用于将Reduxstore注入到整个React应用中。只需在应用的根组件外包裹一次,所有的子组件都能访问到Redux的状态
import { Provider } from 'react-redux'
import { store } from './store'
<Provider store={ store }><App />
</Provider>
  • useSelector:在函数组件获取Redux store里的状态;只会在依赖的状态变化时自动触发组件重新渲染
import { useSelector } from 'react-redux'
const menuIndex = useSelector(state => state.head.menuIndex)
  • useDispatch:获取dispatch方法,用于分发action触发reduce更新状态
import { useDispatch } from 'react-redux'
const dispatch = useDispatch()
dispatch({type: 'SET_MENU', payload: 1})
  • connect(高阶组件):用于将Reduxstatedispatch方法“连接”到React组件的props上。它主要用于类组件或早期函数组件(在hooks出现之前),现在虽然推荐使用useSelectoruseDispatch,但connect依然在很多老项目和复杂场景下被广泛使用
import { connect } from ‘react-redux’// 1、映射 state 到 props
const mapStateProps = (state) => ({menuIndex: state.head.menuIndex
})// 2、映射 dispatch 到 props
const mapDispatchProps = (dispatch) => ({setMenu: (index) => dispatch({type: 'SET_MENU'})
})// 3、用connect包裹组件
class MyComponent extends React.Component {render(){const { menuIndex, setMenu } = this.propsreturn (<div><span>{menuIndex}</span><button onClick={() => setMenu(1)}>切换菜单</button></div>)}
}
export default connect(mapStateProps, mapDispatchProps)(MyComponent)

React Redux的工作流程

  • 创建Store:使用createStoreconfigureStore创建React store,并定义初始状态和reducer
  • 提供Store:通过Provider将store注入到React应用中
  • 连接组件:使用connect或Hooks API(useSelectoruseDispatch)将组件与React store连接,获取状态和操作
  • 更新状态:组件通过dispatch操作触发状态更新,Redux根据reduce更新store的状态
  • 重新渲染:组件根据新的状态重新渲染,完成UI更新

react-persist

react-persist是一个用于持久化Redux状态的库,它的作用是:把Redux store中的数据自动保存到本地存储(如localStorage、sessionStorage、IndexedDB等),页面刷新或关闭后再打开,状态依然能恢复

基本使用

  • 安装:npm install redux-persist
  • 配置
/** @format* createStore: 创建redux store* persistStore :持久化redux store* persistCombineReducers: 持久化多个reducer* storage:使用浏览器的lcaolStorage作为持久化存储介质*/
import { legacy_createStore as createStore } from 'redux'
import { persistStore, persistCombineReducers } from 'redux-persist'
import storage from 'redux-persist/lib/storage' // 默认 localStorageimport user from './reducers/user'
import head from './reducers/head'const persistConfig = {key: 'root', // 本地存储的key名storage, //存储方式 也可以用 sessionStorage 或自定义// whitelist: 只持久化那些reducer// blacklist:不持久化哪些reducer}
// 将多个reduce合并
const reducers = { user, head }
//  创建持久化存储的reducer
const persistedReducer = persistCombineReducers(persistConfig, reducers)
const store = createStore(persistedReducer)
const persist = persistStore(store)export { store, persist }
  • 在React 项目入口文件使用
import { Provider } from ‘react-redux’
// PersistGate 组件会在状态恢复完成后再渲染应用,避免“闪屏”
import { PersistGate } from 'redux-persist/integration/react'
import { store, persist } from './store'<Provider store={store}><PersistGate></PersistGate>
</Provider>

注意事项

  • 存储限制:localStorage 和 sessionStorage 有存储大小限制(通常为 5MB),对于较大的状态数据,可能需要考虑其他存储方案
  • 安全性:敏感数据(如用户凭证)不应直接存储在 localStorage 中,建议使用加密或其他安全措施。
  • 性能优化:对于频繁更新的状态,持久化操作可能会影响性能,建议通过白名单或黑名单进行优化。
http://www.dtcms.com/wzjs/236174.html

相关文章:

  • 做名片去哪个网站大型网站建设平台
  • 诸城做网站的社群推广平台
  • 南京做网站建设有哪些内容卫星电视安装视频
  • 根据百度地图做网站郑州网络推广大包
  • 与做网站的人怎么谈判google下载官方版
  • 有没有可以做各种字体的网站企业官方网站推广
  • 网站建设费计入什么科目比较好软件培训班
  • 商业网站用什么语言做网站制作出名的公司
  • 先做网页设计还是先弄网站网站维护费用
  • 临沂网站建设做网站怎么进入百度推广账户
  • 行业自建网站三亚百度推广公司
  • 网站信息建设山西搜索引擎优化
  • 做视频解析网站是犯法的么电商培训课程
  • 网站 微信认证人工在线客服
  • 自己做的网站怎么做客服聊天seo搜索价格
  • 家居类企业响应式网站微信上怎么做广告推广
  • 做驾考学时在哪个网站搜索引擎有哪些
  • win8风格门户网站销售清单软件永久免费版
  • 以你的心诠释我的爱网页设计素材海淀区seo搜索引擎
  • 网站制作费一般多少刷网站百度关键词软件
  • 一元云购网站建设模块青岛网站推广关键词
  • 网站建设新闻 常识竞价排名的定义
  • 鞍山发布奶盘seo伪原创工具
  • 海洋cms怎么做电影网站手机百度下载安装
  • 杭州电子商务网站建设英文网站seo
  • 网站制作郑州友情连接
  • 网站优化排名如何做产品营销策划方案
  • 成都市住房与城乡建设局官网桂林seo排名
  • 0元建设黑网站lol今日赛事直播
  • 宜兴做网站的公司有哪些哪个模板建站好