react 使用 useState hook 实现 class 类组件中的 setState 方法

本文探讨了一道面试题,即如何在React中使用useState Hook来实现类组件中的setState方法。作者通过分析思路、遇到的问题及解决方案,最终成功创建了一个自定义hook useStateInClass.js。问题的关键在于理解作用域,通过new Function创建新作用域以更新state。通过这个过程,深化了对React Hooks和作用域原理的理解。
摘要由CSDN通过智能技术生成

目录

前言

初探

思路

思考

完成

总结


前言

很明显, 这是一道面试题, 下图是原题

初探

刚开始看到这个面试题, 心想这不就是一个自定义hook就可以解决的事吗, 于是就开始撸代码

思路

  1. 封装一个自定义hook 名为useStateInClass.js
  2. useStateInClass 返回一个 state 和 setState
  3. useStateInClass 保存state 状态 和 setState回调
  4. useStateInClass 在useEffect中, 进行调用

App.js 代码如下

import { useStateInClass} from './hook/useStateInClass'

function App() {
  let [state, setState] = useStateInClass({ stateA: 1, stateB: 2 })
  const handleClick = () => {
    setState({ stateA: Math.random() }, () => {
      console.log('state', state)
    })
  }

  return (
    <div className="App">
      <p>{J
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值