tsconfig.json文件解析,以及react setState异步同步问题

用react的脚手架启动一个ts项目,会有一个tsconfig.json文件,这个是typescript的编译配置。
在这里插入图片描述

noImplicitAny,显示报错any,设为false后,当你的代码参数没有赋予类型时,也不会报any的错

在这里插入图片描述

target

在这里插入图片描述

lib

在这里插入图片描述
全部放上去吧
在这里插入图片描述
在这里插入图片描述

原react的js项目改成ts项目

只需安装几个库
typescript @type/node @type/react @type/react-dom @type/jest
安装后直接jsx改成tsx也能运行。

setState()是同步还是异步的,

有经验的小伙伴会知道setState()后面的代码中的state不是最新的。
但我们可以通过this.setState({},()=>{})通过setState的回调函数,第二个参数,可以拿到最新的state。
那么setState到底是同步还是异步的。
准确的说是 异步更新,同步执行
setState本身不是异步的,但是对state的处理机制让人感觉他是异步的。state处理y一般发生在生命周期变化的时候。
比如我们点击一个事件,调用两次同样的setState,但是他只会更新一个。比如加一操作。为什么呢,因为第二次this.setState时,拿到的this.state还是没有更新过的。所以就会造成两个是一样的。解决办法:
setState就提供了解决办法。
比如第一个参数不仅可以传入一个对象,也可以传入一个函数。(preState, preProps)=》{return {}}
这样就可以通过proState拿到最新的state的值。

react 17的变化

在这里插入图片描述

useState

在这里插入图片描述
这是useState的源码。可以看到useState可以传入一个初始值,值得类型为泛型S,或者传入一个函数返回S。然后对应的就是返回就是【S,】第二个是一个Dispatch一个action,接受一个值类型为S。学过redux的应该知道,dispatch aciton是为了改变state的状态。并且内部做了处理可以当state值改变时更新组件。

副作用

函数副作用。我们吃药的副作用可能是头晕,肚子疼。
而函数的副作用可能是如Date.now()http请求。带来的不确定性。
而纯函数又是指 如果接受同样的参数,返回的结果永远是一样的。
而react组件应该尽量为纯函数,比如传入相同的props,渲染的UI应该永远一样。
而副作用与纯函数相反,指一个函数处理了与返回值无关的事情。
高中的舒数学,二元一次,三元一次,如y=x2,一个x值对应一个y,这就是纯函数
而圆这些不是,一个x可能有多个y对应。
副作用是怎么产生的呢
如componentDidMount发送网络请求,不同的时间点发送的请求返回的数据可能不同。
副作用也不一定是坏事,像ajax,修改Dom等等都是借助副作用才能实现。

useEffect

第二个参数不穿的话,每次更新都会调用,传入空数组,对应componentDidMount,componentWillUnmount。传入有数据的数组,会根据依赖的值改不改变来确定是否调用副作用函数。
useEffect在ts中,使用async await
在这里插入图片描述
在这里插入图片描述
可以这样操作,比如发送网络请求。
如何处理loading。比如数据请求的时候,还没返回。
在这里插入图片描述
错误处理
在这里插入图片描述
俘获后可以通过判断error有没有值去显示提示信息。

HOC

高阶组件。
const hoc = higherOrde(component),传入一个组件,返回一个改造过的组件。相当于对组件做外面一层的处理
如redux的connet函数,就是一个典型的高阶组件。
它的功能,如俘获生命周期,条件渲染,抽取重复代码。
在这里插入图片描述
使用的时候比如我们导出一个组件名A,直接引入HOCMY,然后导出HOCMY(A),就是高阶组建了。

自定义hooks usexxx与高阶组件withxxx

在这里插入图片描述
推荐hooks代替高阶组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderlin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值