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

怎样是做网站上海松江网站制作

怎样是做网站,上海松江网站制作,比较开放的社交软件免费的,wordpress插件文档在使用之前要先了解它的配套插件: 在React中使用redux,官方要求安装其他插件 Redux Toolkit 和 react-redux Redux Toolkit:它是一个官方推荐的工具集,旨在简化 Redux 的使用和管理。Redux Toolkit 提供了一些提高开发效率的工具…

在使用之前要先了解它的配套插件:

在React中使用redux,官方要求安装其他插件 Redux Toolkit 和 react-redux

  1. Redux Toolkit:它是一个官方推荐的工具集,旨在简化 Redux 的使用和管理。Redux Toolkit 提供了一些提高开发效率的工具和功能,如 createSlice 和 configureStore,使得编写和组织 Redux 代码更加简单。使用 Redux Toolkit,您可以更快地编写 Redux 代码,同时还能获得一些性能优化和开发便利。

    安装 Redux Toolkit:

npm install @reduxjs/toolkit

  1. react-redux:它是 Redux 官方提供的与 React 集成的库。它提供了 Provider 组件来将 Redux store 注入到整个 React 应用中,以及 useDispatch 和 useSelector 这些方便的钩子函数,用于在 React 组件中使用 Redux 的 dispatch 和选择器功能。

    安装 react-redux:

npm install react-redux

安装这两个插件后,您就可以在 React 应用中使用 Redux 并使用 Redux Toolkit 进行更简洁、高效的编码,同时通过 react-redux 方便地与 React 进行集成。

创建一个新的react 文件,且安装了两个插件后,调整目录结构

image.png

开始使用:

第一步:初始化 state,定义修改状态的方法,解构出来 actionCreater函数,获取 reducer

reducer 用于定义如何更新应用的状态。它接收两个参数:当前的状态(state)和即将执行的 action,并返回一个新的状态。

counterStore.js

import { createSlice } from "@reduxjs/toolkit";const counterStore = createSlice({name: "counter",// 初始化 stateinitialState: {count: 0,},// 修改状态的方法 同步方法,可以直接修改值reducers: {addCount(state) {state.count++;},decreaseCount(state) {state.count--;},},
});// 解构出来 actionCreater函数
const { addCount, decreaseCount } = counterStore.actions;
// 获取 reducer
const reducer = counterStore.reducer;
// 按需导出
export { addCount, decreaseCount };
// 默认导出
export default reducer;

第二步:在出口文件中导出 redux

src\store\index.js

// 出口文件
import { configureStore } from "@reduxjs/toolkit";
// 导入子模块
import counterStore from "./modules/counterStore";const store = configureStore({reducer: {counter: counterStore,},
});// 导出
export default store;

第三步:配置redux 中的数据全局可用

src\index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
// Redux
import store from "./store";
import { Provider } from "react-redux";const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<React.StrictMode>{/* 全局可用 */}<Provider store={store}><App /></Provider></React.StrictMode>
);reportWebVitals();

第四步:使用

useDispatch:它简化了在函数组件中使用 dispatch 函数的过程,无需手动从 store 中获取 dispatch 函数。

useSelector:它允许组件从 Redux store 中选择(select)所需的状态。通过它可以订阅 Redux store 的状态,以便在组件中获取所需的数据。

App.js

import "./App.css";
import { useDispatch, useSelector } from "react-redux";
// 获取
import { addCount, decreaseCount } from "./store/modules/counterStore";function App() {// 得到 Redux 中的数据const { count } = useSelector((state) => state.counter);// 处理数据的函数const dispatch = useDispatch();return (<div className="App"><button onClick={() => dispatch(addCount())}>+</button><p>{count}</p><button onClick={() => dispatch(decreaseCount())}>-</button></div>);
}export default App;

携带参数

 // 接收传参addTonum(state, action) {// action.payload 可以获取到传入的参数state.count = action.payload;},
import { createSlice } from "@reduxjs/toolkit";const counterStore = createSlice({name: "counter",// 初始化 stateinitialState: {count: 0,},// 修改状态的方法 同步方法,可以直接修改值reducers: {addCount(state) {state.count++;},decreaseCount(state) {state.count--;},// 接收传参addTonum(state, action) {// action.payload 可以获取到传入的参数state.count = action.payload;},},
});// 解构出来 actionCreater函数
const { addCount, decreaseCount, addTonum } = counterStore.actions;
// 获取 reducer
// 用于定义如何更新应用的状态。它接收两个参数:当前的状态(state)和即将执行的 action,并返回一个新的状态。
const reducer = counterStore.reducer;// 按需导出
export { addCount, decreaseCount, addTonum };
// 默认导出
export default reducer;

App.js

      <button onClick={() => dispatch(addTonum(10))}>+10</button><button onClick={() => dispatch(addTonum(20))}>+20</button>

异步请求部分

异步封装的实现

1.创建store的写法保持不变,配置好同步修改状态的方法

2.单独封装一个函数,在函数内部return一个新函数,在新函数中

2.1封装异步请求获取数据

2.2调用同步actionCreater传入异步数据生成一个action对象,并使用dispatch提交

3.组件中dispatch的写法保持不变

src\store\modules\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;},},
});// 异步请求部分
// http://geek.itheima.net/v1_0/channels
const { setChannels } = channelStore.actions;const fetchChannlList = () => {return async (dispatch) => {const res = await axios.get("http://geek.itheima.net/v1_0/channels");dispatch(setChannels(res.data.data.channels));};
};export { fetchChannlList };const reducer = channelStore.reducer;
export default reducer;

出口文件

src\store\index.js

// 出口文件
import { configureStore } from "@reduxjs/toolkit";
// 导入子模块
import counterStore from "./modules/counterStore";
import channelStore from "./modules/channelStore";const store = configureStore({reducer: {counter: counterStore,channel: channelStore,},
});// 导出
export default store;

使用

App.js

import "./App.css";
import { useEffect } from "react";import { useDispatch, useSelector } from "react-redux";
// 获取
import {addCount,decreaseCount,addTonum,
} from "./store/modules/counterStore";
import { fetchChannlList } from "./store/modules/channelStore";function App() {// 得到 Redux 中的数据const { count } = useSelector((state) => state.counter);const { channelList } = useSelector((state) => state.channel);// 处理数据的函数const dispatch = useDispatch();// 挂载渲染useEffect(() => {dispatch(fetchChannlList());}, [dispatch]);return (<div className="App"><button onClick={() => dispatch(addCount())}>+</button><p>{count}</p><button onClick={() => dispatch(decreaseCount())}>-</button><hr />{/* redux 传入参数 */}<button onClick={() => dispatch(addTonum(10))}>+10</button><button onClick={() => dispatch(addTonum(20))}>+20</button><hr />{/* 异步 */}<ul>{channelList.map((item) => (<li key={item.id}>{item.name}</li>))}</ul></div>);
}export default App;

浏览器插件,管理 redux

Redux DevTools

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

相关文章:

  • 网站建设编写代码出错兰州微网站建设
  • 青岛做家纺的公司网站郑州做网站公司排名
  • 河北建设厅官方网站wordpress回收站+恢复
  • 网站运营托管方案保定市建设局安监网站
  • 建站公司哪家做出来的网站好最便宜的车
  • 高端网站开发制作seo云优化如何
  • 东莞做汽车有没有买票的网站wordpress 嵌套评论
  • 陕西民盛建设有限公司网站上海口碑最好的家装
  • 山东省住房城乡建设厅网站苏州网站建设机构
  • dedecms怎么做网站济南中京网站建设公司
  • 请选择一个网站制作软件wordpress交友主题免费
  • 简述网站推广的基本方法百度搜题在线使用
  • 两学一做学习网站php做的网站怎么调试
  • 金华建设工程网站培训机构网页设计模板
  • 建立外贸英文网站应该怎么做网站建设的论坛
  • 如何建设公司网络营销网站交流网站建设项目背景
  • 建网站需要什么步骤合肥网站建设制作价格
  • 展示型网站建设模板今天最火的新闻头条
  • 各大网站新闻不用vip也能看的黄台的app
  • 免费二级网站成都建立网站的公司
  • 织梦备份网站数据汉中市住房和城乡建设局网站
  • 企业信用信息公示年报上海抖音seo
  • 网站开发的技术要求中国建设银行下载官方网站
  • 提供图片做网站的要求深圳市建设安监站网站
  • 网站制作泉州公司网站备案幕布尺寸
  • 局域网内网站建设的步骤过程wordpress备份坚果云
  • 电商网站与大数据如何免费制作自己的网站
  • 中山网站建设排名甘肃手机版建站系统信息
  • 公司网站搜索引擎排名分析东莞部门网站建设
  • 一个好网站建设做一个推广网站多少钱