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

做网站和优化的公司深圳市勘察设计

做网站和优化的公司,深圳市勘察设计,广东深圳有几个区,网站定制开发内容1. 环境搭建 插件安装#xff1a;Redux Toolkit和react-redux npm i reduxjs/toolkit react-redux2、 store目录结构设计 集中状态管理的部分会单独创建一个store目录#xff08;在src下#xff09;应用通常会有很多个子模块#xff0c;所以还会有个modules目录#x…1. 环境搭建 插件安装Redux Toolkit和react-redux npm i reduxjs/toolkit react-redux2、 store目录结构设计 集中状态管理的部分会单独创建一个store目录在src下应用通常会有很多个子模块所以还会有个modules目录在内部编写业务分类的子storestore中的入口文件index.js的作用是组合modules中的所有子模块并导出store 3、使用React Toolkit创建counterStore 创建各模块的store counterStore.js import { createSlice } from reduxjs/toolkit;// 创建store const counterStore createSlice({name: counter,// 初始化stateinitialState: {count: 0},// 修改状态的方法 reducers: {inscrement(state) {state.count;},decrement(state) {state.count--;}} })// 结构出actionCreater函数 const {inscrement, decrement} counterStore.actions // 获取reducer const reducer counterStore.reducer// 以按需导出的方式导出actionCreater export {inscrement, decrement} // 以默认导出的方式导出reducer export default reducer在index,js中组合store import { configureStore } from reduxjs/toolkit; // 导入子模块reducer import counterReducer from ./modules/counterStoreconst store configureStore({reducer: {counter: counterReducer} })export default store4、为React注入store React-redux负责把Redux和redux连接起来内置Provider组件通过store参数把创建好的store实例注入到应用中。 import React from react; import ReactDOM from react-dom/client; import ./index.css; import App from ./App; import reportWebVitals from ./reportWebVitals; import store from ./store; import { Provider } from react-redux;const root ReactDOM.createRoot(document.getElementById(root)); root.render(React.StrictModeProvider store{store}App //Provider/React.StrictMode );reportWebVitals();5、在React组件中使用store中的数据 使用useSelector钩子函数把store中的数据映射到组件中 import React from react; import ./App.css;import { useSelector } from react-redux;function App() {// 这里state.counter和store中的reducer.counter是对应的const {count} useSelector(state state.counter);return (React.Fragmentdiv{count}/div/React.Fragment); }export default App; 6、React组件中修改store中的数据 引入useDispatch钩子函数作用生成提交的action对象的dispatch函数 import React from react; import ./App.css;import { useDispatch, useSelector } from react-redux;// 倒入actionCreater import {inscrement, decrement} from ./store/modules/counterStorefunction App() {// 这里state.counter和store中的reducer.counter是对应的const {count} useSelector(state state.counter);const dispatch useDispatch()return (React.Fragmentdiv{/* 调用dispatch提交action对象 */}button onClick{() dispatch(decrement())} - /buttonspan{count}/spanbutton onClick{() dispatch(inscrement())} /button/div/React.Fragment); }export default App;7、在action中传参 在reducers的同步修改方法中添加action对象参数在调用actionCreator时传递参数参数会被传递到action对象的payload属性上 定义方法通过payload获取传入的参数 import { createSlice } from reduxjs/toolkit;// 创建store const counterStore createSlice({name: counter,// 初始化stateinitialState: {count: 0},// 修改状态的方法 reducers: {inscrement(state) {state.count;},decrement(state) {state.count--;},addToNum (state, action) {// payload是固定属性state.count action.payload}} })// 解构出actionCreater函数 const {inscrement, decrement, addToNum} counterStore.actions // 获取reducer const reducer counterStore.reducer// 以按需导出的方式导出actionCreater export {inscrement, decrement, addToNum} // 以默认导出的方式导出reducer export default reducer使用 button onClick{() dispatch(addToNum(10))} add To 10/buttonbutton onClick{() dispatch(addToNum(20))} add To 20/button8、异步代码 store写法不变单独封装一个函数返回一个新函数在新函数中封装异步请求获取数据并调用同步actionCreater传入异步数据生成一个action对象并使用dispatch提交 channelStore.js import { createSlice } from reduxjs/toolkit; import axios from axios;const channelStore createSlice({name: channel,initialState: {channelList: []},reducers: {setChannels(state, action) {state.channelList action.payload}} })// 异步请求部分 const {setChannels} channelStore.actionsconst fetchChannelList () {return async (dispatch) {const res await axios.get(http://geek.itheima.net/v1_0/channels)dispatch(setChannels(res.data.data.channels))} }const reducer channelStore.reducer export {fetchChannelList} export default reducer 组件中dispatch的写法保持不变 store/index.js不变 import { configureStore } from reduxjs/toolkit; // 导入子模块reducer import counterReducer from ./modules/counterStore import channelReducer from ./modules/channelStoreconst store configureStore({reducer: {counter: counterReducer,channel: channelReducer} }) export default store在组件中使用 import React, { useEffect } from react; import { useDispatch, useSelector } from react-redux;// 倒入actionCreater import { fetchChannelList } from ./store/modules/channelStore;function App() {const {channelList} useSelector(state state.channel)const dispatch useDispatch()useEffect(() {dispatch(fetchChannelList())}, [])return (React.Fragmentdiv{/* 调用dispatch提交action对象 */}ul{channelList.map(item li key{item.id}{item.name}/li)}/ul/div/React.Fragment); }export default App;
http://www.dnsts.com.cn/news/189609.html

相关文章:

  • 网站内页怎样做优化客厅装修效果图片大全
  • 网站后台上传图片无法显示网站管理员在哪里
  • 网站运营费用预算wordpress 爱
  • 怎么看一个网站做没做优化丹东搜索引擎优化
  • 厦门微网站开发西安网站排名推广
  • 做贸易注册网站用自己名字青海个人旅游网站建设
  • 温岭新站seo一个人免费视频在线观看高清
  • 电商网站规划拼多多网站建设框架图
  • 现在什么省网站备案最快网站进入沙盒期
  • 化妆品做备案的网站网页模版之家
  • 陕西网站建设方案高端企业网站建设蓦然郑州网站建设6
  • 自己建设网站需要哪些cpanel应用不显示wordpress
  • 推荐设计网站黄骅港务
  • 成都的网站店铺网站怎么建
  • python制作视频网站开发插画师零基础自学
  • 高端网站鉴赏做网站投资多少钱
  • wordpress本地数据库密码忘记长沙seo优化首选
  • 新网站做百度推广 收录做化工回收上什么网站
  • 做网站一般按什么报价pc端移动端网站怎么做的
  • 一 网站建设的总体目标网站用html做的怎么弄后台
  • 网站怎么备案在哪里自助建站源码下载
  • 商城网站管理系统安溪网页定制
  • 网站维护怎么收费h5页面制作教程
  • 如何开通个人网站嘉兴网站建设定制
  • 做网站那个程序好搭建网站是什么意思
  • seo优化网站多少钱商标在线注册平台
  • 商标注册网站缴费入口网站开发 动易
  • 实例网站制作教程在虚拟主机上建设多个网站
  • 家里做服务器开网站广东建设监理协会网站题库
  • 自己做微博的网站天津网站建设运营方案