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

佛山做网站建设博客和个人网站建设情况

佛山做网站建设,博客和个人网站建设情况,品牌策划方案怎么做,敬请期待的近义词Redux是React中使用较多的状态管理库,这篇文章主要介绍了Redux的基本用法,快来看看吧 首先我们需要新建一个React项目,我使用的ReactTS,文件结构如下 Redux的相关使用主要在store文件中 Store:存储整个应用的状态Act…

Redux是React中使用较多的状态管理库,这篇文章主要介绍了Redux的基本用法,快来看看吧
首先我们需要新建一个React项目,我使用的React+TS,文件结构如下
在这里插入图片描述
Redux的相关使用主要在store文件中

  1. Store:存储整个应用的状态
  2. Action:一个描述发生了什么的JS对象
  3. Reducer:一个纯函数,根据传入的action更新相关的状态
  4. Dispatch:发送action到reducer的方法
  5. Selector:从Store中获取函数的函数

接下来,需要安装相关的包

npm install redux react-redux

之后,我们在相关文件中写相关的规范

  1. types.ts
export const INCREMENT = 'INCREMENT';
export const DECREMENT = 'DECREMENT';
  1. action.ts
import { INCREMENT, DECREMENT } from './types';export const increment = () => ({type: INCREMENT,
});export const decrement = () => ({type: DECREMENT,
});
  1. reducers.ts
import { INCREMENT, DECREMENT } from './types';const initialState = {count: 0,
};const counterReducer = (state = initialState, action) => {switch (action.type) {case INCREMENT:return { ...state, count: state.count + 1 };case DECREMENT:return { ...state, count: state.count - 1 };default:return state;}
};export default counterReducer;
  1. index.js
import { createStore } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import counterReducer from './reducers';const store = createStore(counterReducer, composeWithDevTools());export default store;

之后,我们需要将store提供给React应用来使用,在main.tsx中,进行如下修改

// import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.tsx'
import './index.css'
import store from './store/index.ts'
import { Provider } from 'react-redux'createRoot(document.getElementById('root')!).render(// <StrictMode><Provider store={store}><App /></Provider>// </StrictMode>,
)

这样做的目的是,将 Redux Store 注入到整个 React 应用中,这样子组件都可以通过 useSelector 和 useDispatch 访问 Store

接下来,就是在组件中进行使用了,在我们的App.tsx文件中,将相关的方法进行引用

import './App.css'
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './store/action';function App() {// 使用 useSelector 从 Redux Store 获取数据const count = useSelector((state) => state.count);// 使用 useDispatch 发送 actionconst dispatch = useDispatch();return (<><div><h2>Count: {count}</h2><button onClick={() => dispatch(increment())}>Increment</button><button onClick={() => dispatch(decrement())}>Decrement</button></div></>)
}export default App

useSelector() 可以从 Store 中选择数据,然后调用useDispatch() 返回 dispatch 方法,可以触发相关的action,这样就可以成功使用Redux了

但是,在实际开发中,我们大多数情况下都是会处理异步的情况,那么在Redux中如何使用异步呢?由于Redux本身只支持同步数据流,如果处理异步操作,我们需要使用React Thunk中间件
首先需要在store文件夹下边index.ts文件中进行如下修改

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import { composeWithDevTools } from 'redux-devtools-extension';
import counterReducer from './reducers';const store = createStore(counterReducer,composeWithDevTools(applyMiddleware(thunk))
);export default store;

接下来就可以在action.ts文件中封装相关的异步操作,案例如下

export const fetchData = () => {return async (dispatch) => {try {const response = await fetch('www.baidu.com');const res = await response.json();dispatch({ type: 'FETCH_SUCCESS', payload: data });} catch (error) {dispatch({ type: 'FETCH_ERROR', payload: error });}};
};

最后在reducers.ts中进行数据返回即可

const initialState = {count: 0,data: null,error: null,
};const counterReducer = (state = initialState, action) => {switch (action.type) {case 'FETCH_SUCCESS':return { ...state, data: action.payload };case 'FETCH_ERROR':return { ...state, error: action.payload };default:return state;}
};export default counterReducer;

以上便是Redux的基本操作,希望可以帮助到你

http://www.yayakq.cn/news/876828/

相关文章:

  • 网站建设平台软件哪个好用网站建设请款报告
  • 唐山建设造价信息网的网站网站网页设计
  • 东莞网站制作很好 乐云践新网站双语怎么做
  • 烟台福山建设工程监测网站长春网页推广有哪些公司
  • 湛江网站建设团队网络推广培训学校
  • 如何保护我做的网站模板WordPress最顶部的
  • 网站建设微信营销网站开发天津网站开发
  • 网站开发找工作asp网站怎么验证到百度站长
  • 网站建设与运营考试typecho 转wordpress
  • 做网站上传图片一直错误广告制作加工厂
  • 西安大网站建设公司怎么做qq分享网站
  • 平顶山营销型网站建设网站 数据库 关系
  • 亚马逊网站特点和经营范围泉州建设工程招投标信息网
  • wordpress权限设置方法濮阳网站建设优化
  • 如何用网站模板建站百度官方app下载
  • 静态网站做网站一单能挣多少
  • 不会做网站能做网络销售吗国有企业查询系统官网
  • 网站建设差打不开免费域名注册优惠
  • 《网站设计与建设》电子书制作网页的软件
  • 信息型企业网站有哪些最近国际新闻
  • 爬虫网站怎么做起名最好的网站排名
  • 云南省文山建设厅网站上海网站建设上海
  • 权威的唐山网站建设建立问答类的网站
  • 做新网站不换域名wordpress点击打印网页
  • 山西省工程建设标准定额网站老板办公室装修效果图
  • 公司网站简历刷新怎么做linux系统
  • 网站 文件夹 上传网站建设学习网站
  • 阳谷聊城网站优化今天最新军事新闻
  • 网站开发过程代码问题 解决郑州今天管控最新消息
  • 超便宜的网站修改wordpress评论