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

uugaicomlogo免费设计网站优化好搜移动端关键词快速排名

uugaicomlogo免费设计网站,优化好搜移动端关键词快速排名,定制网络营销计划,图片生成链接在线工具useReducer函数 1. useState的替代方案.接收一个(state, action)>newState的reducer, 并返回当前的state以及与其配套的dispatch方法2. 在某些场景下,useReducer会比useState更加适用,例如state逻辑较为复杂, 且**包含多个子值**,或者下一个state依赖于之前的state等清楚us…

useReducer函数

1. useState的替代方案.接收一个(state, action)=>newState的reducer,
并返回当前的state以及与其配套的dispatch方法2. 在某些场景下,useReducer会比useState更加适用,例如state逻辑较为复杂,
且**包含多个子值**,或者下一个state依赖于之前的state等

清楚useReducer场景?
与useState区别?
不足之处,只能处理同步
如何实现异步,提供了两个案例?

1. 用useState做登录

一组响应式数据有关联关系,可以做成一个整体,使用useReducer将其作为一个整体实现

<body><div id="app"></div><script type="text/babel">let app = document.querySelector('#app');let root = ReactDOM.createRoot(app);let { useState } = React;// 用useState做登录// >  一组响应式数据有关联关系,可以做成一个整体,使用useReducer将其作为一个整体实现let Welcome = (props) => {  const [ isLogin, setLogin ] = useState(true);const [ isLogout, setLogout ] = useState(false);const handleLogin= () => {setLogin(true);setLogout(false);}const handleLogout= () => {setLogout(true);setLogin(false);}return (<div>{isLogin?<button onClick={handleLogout}>登出</button>:<button onClick={handleLogin}>登录</button>}</div>);}let element = (<Welcome />);root.render(element);</script>
</body>

2. 改为useReducer

<body><div id="app"></div><script type="text/babel">/* useReducer改写*/let app = document.querySelector('#app');let root = ReactDOM.createRoot(app);let { useReducer } = React;let loginState = {isLogin: true,isLogout: false}// 不足: 处理同步actionlet loginReducer = (state, action) => {switch (action.type) {case 'login':return { isLogin: true, isLogout: false }case 'logout':return { isLogin: false, isLogout: true }default:throw new Error()}}// 用useReducer做登录// > 根据类型,决定不同的state处理变化let Welcome = (props) => {const [state, loginDispatch] = useReducer(loginReducer, loginState);const handleLogin = () => {loginDispatch({ type: 'login' })}const handleLogout = () => {loginDispatch({ type: 'logout' })// loginDispatch({ type: 'logout' ,payload:''})}return (<div>{state.isLogin ?<button onClick={handleLogout}>登出</button> :<button onClick={handleLogin}>登录</button>}</div>);}let element = (<Welcome />);root.render(element);</script>
</body>

不足

useReduer只处理同步请求,对异步请求如何处理?
https://zhuanlan.zhihu.com/p/114367502
在这里插入图片描述

在这里插入图片描述

3.1 异步封装

组件页面
const init = { dataList:[] };//初始化dataStateconst [state,dispatch] = useReducer(reducer,init);useEffect(() => {//发送网络请求axios.get("/user?ID=123").then(res => {dispatch({type:ACTION_TYPE.GETDATA,payload:res.data //后端返回的数据})})
},[]);//使用 state.dataList 渲染页面
在reducer页面function reducer(state,action){switch(action.type){case "getData":return { //根据需求对数据做出操作,这里将返回的数据与初始化的数据合并...state,dataList:action.payload };
}    export default reducer;

3.2 异步封装

初始化直接执行获取数据

import React, { useEffect, useState, useReducer } from "react";
import ReactDom from "react-dom";
import $ from "jquery";const useProduct = () => {const [data, dispatch] = useReducer((state, action) => {switch (action.type) {case "a":return action.value;default:return [];}}, []);useEffect(() => {$.ajax({url: "http://suggest.taobao.com/sug?code=utf-8&q=袜子",dataType: "jsonp",jsonp: "callback",success: (data) => {dispatch({type: 'a',value: data.result});},error: data => dispatch({type: 'error', msg: data})});}, []);return data;
};const Index = () => {const data = useProduct();return <>{data.length}</>;
};ReactDom.render(<Index />, document.getElementById("root"));

官网:
1. https://zh-hans.legacy.reactjs.org/docs/hooks-reference.html#usereducer

http://www.khdw.cn/news/29204.html

相关文章:

  • 中国数学外国人做视频网站网络服务器的作用
  • iis网站在点默认文档的时候报错.店铺100个关键词
  • 上海专业网站设计怎样推广产品
  • 邢台公司做网站多少钱如何规划企业网络推广方案
  • 日本网站 设计海口网站关键词优化
  • 辛集seo网站优化网站人多怎么优化
  • 建设单位委托第三方检测潍坊seo教程
  • 网站做联盟收入整合营销活动策划方案
  • 国内最最早做虚拟货币的网站seo综合查询怎么用
  • 江西省建设厅网站查询建造师2345网址导航电脑版官网
  • 做网站需要哪些百度一下你就知道网页
  • 手机网站怎么写2022智慧树互联网与营销创新
  • 扁平化 wordpress 主题下载百度seo推广计划类型包含
  • it外包人员有多惨优化软件刷排名seo
  • 网站seo重庆seo优
  • 做网站需要看啥书seo快速排名软件价格
  • 网站图片代码网站页面优化方案
  • 做网站的价格是多少看广告收益的正规平台
  • 招商网站如何做推广自己怎么做网页推广
  • 网站导航条背景图片企业邮箱注册申请
  • 做电子相册的大网站足球排行榜前十名
  • 怎么建一个免费的网站如何做网络推广推广
  • 做网站的是什么专业百度推广怎么优化
  • 专业的医疗行业网站模板seo排名优化厂家
  • 建站abc登陆企业网站制作公司
  • 网站怎么做能提升ip流量国际最新消息
  • 杭州网站建设案例网络优化的内容包括哪些
  • 在长沙阳光医院做网站编辑人民日报今日头条新闻
  • 自己做的网站如何兼容网络营销推广工具有哪些?
  • 有那些专门做职业统计的网站seo搜索引擎优化实训报告