鄱阳电商网站建设贵州有哪些公司做网站做得好

张小明 2026/1/9 17:25:47
鄱阳电商网站建设,贵州有哪些公司做网站做得好,外贸推广引流,网上设计接单赚钱目录 useDispatch 的基本概念 主要用途 在我们的项目中的应用 useDispatch 的基本概念 useDispatch 是一个 React Hook#xff0c;它返回 Redux store 的 dispatch 函数的引用。通过这个函数#xff0c;我们可以向 Redux store 发送 actions#xff0c;从而更新应用程序…目录useDispatch 的基本概念主要用途在我们的项目中的应用useDispatch 的基本概念useDispatch是一个 React Hook它返回 Redux store 的 dispatch 函数的引用。通过这个函数我们可以向 Redux store 发送 actions从而更新应用程序的状态。主要用途触发 Redux actions通过 useDispatch 获取 dispatch 函数然后用它来 dispatch actions更新 Redux store 中的状态。连接 UI 与状态管理允许组件通过 dispatching actions 来响应用户交互或其它事件。在我们的项目中的应用在 Login.tsx 组件中我们这样使用了 useDispatchimport React, { FC, useEffect } from react import { useNavigate, Link } from react-router-dom import { Typography, Space, Form, Input, Button, Checkbox, message } from antd import { UserAddOutlined } from ant-design/icons import { useDispatch } from react-redux import { useRequest } from ahooks import { REGISTER_PATHNAME, MANAGE_INDEX_PATHNAME } from ../router import { loginService } from ../services/user import { setToken } from ../utils/user-token import { loginReducer } from ../store/userReducer import styles from ./Login.module.scss const { Title } Typography const USERNAME_KEY USERNAME const PASSWORD_KEY PASSWORD function rememberUser(username: string, password: string) { localStorage.setItem(USERNAME_KEY, username) localStorage.setItem(PASSWORD_KEY, password) } function deleteUserFromStorage() { localStorage.removeItem(USERNAME_KEY) localStorage.removeItem(PASSWORD_KEY) } function getUserInfoFromStorage() { return { username: localStorage.getItem(USERNAME_KEY), password: localStorage.getItem(PASSWORD_KEY), } } const Login: FC () { const nav useNavigate() const dispatch useDispatch() const [form] Form.useForm() // 第三方 hook useEffect(() { const { username, password } getUserInfoFromStorage() form.setFieldsValue({ username, password }) }, []) const { run } useRequest( async (username: string, password: string) { const data await loginService(username, password) return data }, { manual: true, onSuccess(result) { const { token , userInfo } result setToken(token) // 存储 token // 主动将用户信息存入 Redux store const { username, nickname } userInfo dispatch(loginReducer({ username, nickname })) message.success(登录成功) nav(MANAGE_INDEX_PATHNAME) // 导航到我的问卷 }, } ) const onFinish (values: any) { const { username, password, remember } values || {} run(username, password) // 执行 ajax if (remember) { rememberUser(username, password) } else { deleteUserFromStorage() } } return ( div className{styles.container} div Space Title level{2} UserAddOutlined / /Title Title level{2}用户登录/Title /Space /div div Form labelCol{{ span: 6 }} wrapperCol{{ span: 16 }} initialValues{{ remember: true }} onFinish{onFinish} form{form} Form.Item label用户名 nameusername rules{[ { required: true, message: 请输入用户名 }, { type: string, min: 5, max: 20, message: 字符长度在 5-20 之间 }, { pattern: /^\w$/, message: 只能是字母数字下划线 }, ]} Input / /Form.Item Form.Item label密码 namepassword rules{[{ required: true, message: 请输入密码 }]} Input.Password / /Form.Item Form.Item nameremember valuePropNamechecked wrapperCol{{ offset: 6, span: 16 }} Checkbox {...({ children: 记住我 } as any)} / /Form.Item Form.Item wrapperCol{{ offset: 6, span: 16 }} Space Button typeprimary htmlTypesubmit 登录 /Button Link to{REGISTER_PATHNAME}注册新用户/Link /Space /Form.Item /Form /div /div ) } export default Login在这段代码中useDispatch 的作用是1. 获取 Redux store 的 dispatch 函数2. 当登录成功后主动调用 dispatch(loginReducer({ username, nickname })) 将用户信息存储到 Redux store 中3. 这样在页面跳转后目标页面就能立即从 Redux store 中获取到用户信息而不需要等待异步请求为什么需要这样做在我们之前的实现中虽然登录成功并存储了 token但在跳转到新页面时目标页面需要通过 useLoadUserData 钩子来加载用户信息。这个钩子会检查 Redux store 中是否已经有用户信息// 判断当前 redux store 是否已经存在用户信息 const { username } useGetUserInfo() // redux store useEffect(() { if (username) { setWaitingUserData(false) // 如果 redux store 已经存在用户信息就不用重新加载了 return } run() // 如果 redux store 中没有用户信息则进行加载 }, [username])如果我们不在登录成功后主动将用户信息存入 Redux那么在跳转后username 会是空的导致 useLoadUserData 钩子发起 AJAX 请求去获取用户信息。由于浏览器的异步特性和可能的时序问题这可能导致页面显示异常或者延迟。通过使用 useDispatch 主动 dispatch 用户信息我们确保了在跳转后Redux store 中已经有正确的用户信息避免了额外的网络请求和潜在的时序问题。总结useDispatch 是 React-Redux 中的关键 Hook它使得函数组件能够与 Redux store 进行交互通过 dispatching actions 来更新全局状态。在我们的案例中它帮助我们解决了登录后跳转时的用户体验问题确保用户信息能及时同步到 Redux store 中。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站论坛做斑竹wordpress linux 中文

AutoGPT项目结构解读:新手也能看懂源码 在当前大语言模型(LLM)迅猛发展的背景下,我们正见证一场从“被动应答”到“主动执行”的AI范式变革。传统助手型应用依赖用户一步步下达指令,而像AutoGPT这样的自主智能体&#…

张小明 2026/1/3 17:49:30 网站建设

做那种的视频网站大连开发区医院

Windows 内置内存诊断工具是排查内存故障时最直接、最方便的首选工具。 工具简介 Windows 内存诊断工具 是一个内置于 Windows 操作系统中的硬件检测程序。它的唯一目的就是通过向计算机的物理内存写入和读取各种数据模式,来检测内存条是否存在错误。 核心特点 内置…

张小明 2026/1/7 7:03:48 网站建设

怎么做网站的百度权重wordpress询盘功能

1. 为什么这个毕设项目值得你 pick ? 图书馆智慧管理系统结合了读者管理、图书管理、实体管理以及入库、借阅和归还等多种功能模块,旨在提升现代图书馆的管理水平和服务质量。相较于传统选题,“烂大街”式的系统设计往往缺乏创新性和实用性&#xff0c…

张小明 2026/1/1 15:16:43 网站建设

南宁做企业网站永德网站建设

在Unity开发中,网络请求往往是无法绕开的技术难点。传统的回调地狱、线程安全问题、JSON序列化困扰,这些痛点是否也曾让你夜不能寐?今天,我们将深入探讨基于Promise的RestClient解决方案,带你走出异步网络请求的迷雾。…

张小明 2026/1/1 18:13:14 网站建设

十里堡网站建设物业网站宣传册怎么做

从零构建推荐引擎:物品协同过滤实战全解析你有没有想过,为什么你在淘宝刚看完一款耳机,接下来刷到的页面全是同类产品?或者在抖音看了一个露营视频后,系统突然开始疯狂推送帐篷、睡袋和便携炉具?这背后不是…

张小明 2026/1/1 15:16:24 网站建设

网站主体域名做图模板网站

SAP暂估相关的关键词:GR/IR科目/重分类,IDCNGRIR_GNB 已交付未开票的收发货清账,IDCNGRIR_BNG - 已开票未交付的收发货清账 勾选GR/IR特殊处理,SAP使用参考代码3清账。参考代码3是SAP自动填写赋值的 基于收货的发票结算时&#…

张小明 2026/1/1 23:03:19 网站建设