类组件的 useEffect 替代品

2024-03-13

我刚刚了解到在功能组件中我可以使用useEffect留意任何副作用(例如:使用时localStorage)这确保我的状态与效果挂钩。

我想在我的基于类的组件中具有类似的功能localStorage。我怎样才能确保我的状态在发生任何变化时立即更新?localStorage?


我就是这样做的。

class Login extends Component {
    constructor(props) {
        super(props);

        this.state = {
            // Get value from localStorage or use default
            isLoggedIn: localStorage.getItem('isLoggedIn') || 0
        }

        // Listen to storage event
        window.addEventListener('storage', (e) => this.storageChanged(e));

        // Bind this to storageChanged()
        this.storageChanged = this.storageChanged.bind(this);
    }

    storageChanged(e) {
        if(e.key === 'isLoggedIn') {
            this.setState({isLoggedIn: e.newValue})
        }
    }

    render() {
        return <p>{this.state.isLoggedIn}</p>
    }
}

这就是我如何连接到localStorage使用基于类的组件进行更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类组件的 useEffect 替代品 的相关文章

  • 在react中使用map方法渲染JSON API

    我对 JSON 对象 数组和映射方法的语法和结构有困难 我是 React 新手 正处于学习的初始阶段 这是我粘贴在下面的 JSON 文件代码 cloud Asia availability last15Min 100 last24Hour
  • 如何删除原生选项卡的边框

    我需要删除图像中标记的边框 我正在使用react native 和native base 选项卡 我需要删除选项卡的底部边框
  • 如何正确使用react-router-dom中的useHistory()?

    如何使用useHistory 正确吗 我无法从一个反应组件过渡到另一个反应组件 根据 React 文档以及 Stack Overflow 上的说明 我无法从 App js 转换到 MyComponent js 例如 我正在尝试 App js
  • React 设置背景颜色与状态 rgb

    所以我根据数据库的结果生成一个表 在数据库中我保留 rgb 值 例如 75 75 75 现在当我生成列表时 我想使用保存的值设置我的 td 的背景 tbody this state boxes map box i gt tr td box
  • Next.js 中的 .env.local 文件未正确设置

    当我创建一个 env local文件在我的项目根目录中 它设置不正确 在文件中 我有我的 API 密钥 如下所示 API KEY SOME API KEY 然后当我尝试访问它时获取服务器端属性 with 进程 env API KEY 它不起
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points
  • 陷入了 React useEffect 的一系列变化

    我正在反应中创建一个表单生成器 在一个简单的文本字段上 我需要 Change currentValue When currentValue已更改 验证它 验证完成后 发出一个事件 有效或无效 这是我的代码 const TextInput p
  • jest.mock() 在测试内部不起作用,仅在测试外部起作用

    我有一套简单的测试 在某些情况下我想模拟一个模块 而在某些情况下则不想 然而 jest mock 仅当将其置于测试之外时才有效 任何人都知道为什么会这样以及我做错了什么 这是我想要模拟的函数的实际导入 import hasSupport g
  • useState 以 `new` 关键字作为参数

    我正在构建一个单独的服务来处理复杂的事情 该服务是一个类 只是为了测试建议 我在一个内部模拟useState 重点是我忘记了一个console log在构造函数内部 并意识到类构造函数在组件重新渲染时被调用多次 这种行为不会导致意外的行为或
  • Redux 状态 - 最大推荐大小

    我正在构建一个项目管理应用程序 但我仍然在努力解决一个问题 在 Redux 状态中存储什么以及 按需 加载什么 Redux 状态是否有已知的 最大推荐大小 几十千字节 几百千字节 兆字节单位 请记住 归根结底 Redux 只是 如何 将信息
  • 如何在 React 中将图像加载到画布上?

    如何在 React 中将图像上传到画布的整个宽度 高度 例如 class PlanPage extends Component constructor props super props componentWillMount this se
  • React router.push 和 router.replace 之间的区别?

    有什么区别React 路由器推送 and 路由器 替换 路由器历史记录就像一个stack of routes 当您使用router replace 您将覆盖堆栈的顶部 当使用router push 它在顶部添加了一条新路线stack 路由器
  • “react-infinite-scroll-component” 一次调用后停止工作(loadMore 只被调用一次)

    我使用react infinite scroll component库进行分页 但即使hasMore为true loadMore也会被调用一次
  • React 中的输入仅允许数字(antd 样式)

    我知道 type number 有效 但这不是我想要的 my HTML
  • Firebase 托管部署失败

    Running firebase deploy在给我一个超时错误之前会运行几分钟Error ESOCKETTIMEDOUT 我之前已经成功部署了多次 除了项目的前端 用 React 编写 之外 没有更改任何内容 我有一个单独的文件夹 其中包
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • 摆脱node-jsx

    在我的 NodeJS 应用程序的路由器中 我想渲染一个 React 应用程序 由于它没有被浏览器化 并且已反应 因此它返回unexpected token lt 构建时出错 我发现如果我require node jsx install 它不

随机推荐

  • 如何将日期转换为 GMT?

    如何将不同时区的日期转换为GMT 0 假设我有这样的约会 Fri Jan 20 2012 11 51 36 GMT 0500 Fri Jan 20 2012 11 51 36 GMT 0300 Fri Jan 20 2012 11 51 3
  • 如何提取 MVIMG 的照片/视频组件?

    Google Pixel 2 以及此后可能的其他手机都具有覆盖 动态照片 的功能 这些保存为MVIMG并且比较大 我正在寻找一种删除 提取视频的方法 到目前为止我发现了一个有前途的 exif 标签 exiftool xmp all MVIM
  • PHP 与 MySQL 8.0+ 错误:服务器请求客户端未知的身份验证方法[重复]

    这个问题在这里已经有答案了 我在 PHP 7 0 上运行 MySQL 版本 8 当我尝试从 PHP 连接到数据库时 出现以下错误 连接错误 SQLSTATE HY000 2054 服务器请求客户端未知的身份验证方法 PHP 可能会显示此错误
  • 理解字符串的真实性

    我知道Python内置类型有一个 真实性 值 空字符串被认为是False 同时考虑任何非空字符串True 这是有道理的 我可以使用内置函数检查这一点bool gt gt gt bool False gt gt gt bool dog Tru
  • R grepl:快速将多个字符串与多个子字符串匹配,返回所有匹配项

    我在 R 中有相当大的字符串集 set seed 42 strings lt sapply 1 250000 function x sample 2 20 1 prob c 0 001 0 006 0 021 0 043 0 075 0 1
  • 如何在 SQL Server 中一次更改多个列

    我需要ALTER表中几列的数据类型 对于单列 以下工作正常 ALTER TABLE tblcommodityOHLC ALTER COLUMN CC CommodityContractID NUMERIC 18 0 但是如何更改一个语句中的
  • 使用 JavaScript 在画布中操作图像亮度

    我想更改图像的亮度 我有一个大项目 下面是一个最小的可重现示例 我添加了这一行来检测对象中的 ID 并将亮度分配给图像属性 for let j 0 j lt imageOverlay length j if id imageOverlay
  • Rails simple_form label_html

    我想覆盖一种表单上的输入与其标签之间的边距 可以通过 label html gt 来完成吗 github 上的示例显示了 class gt special 被传递 我需要在 css 文件中设置一些内容吗 如果是这样 我该怎么做 也就是说 我
  • 如何从仅一个月前的Firestore中获取文档

    我正在执行查询以仅获取 1 个月前的文档 我存储文档本身的创建时间 timestamp 9 Apr 2020 10 03 43 AM 现在 在我的查询中 我想获取当月的所有文档 但我不想使用客户端的 currentDate 因此无法更改 但
  • C# 是否支持绑定方法或方法闭包(特殊闭包允许 this 始终指向实例)

    Adobe有非常明确的解释here http help adobe com en US ActionScript 3 0 ProgrammingAS3 WS5b3ccc516d4fbf351e63e3d118a9b90204 7f30 ht
  • JS DOM createElements 和appendChild 不起作用

    我正在尝试创建一个包含一些学生信息的网站 因此 我需要创建动态配置文件卡并将它们附加到正文中 但 DOM 总是让我着迷 function student src name this src src this name name var st
  • 具有两种纯色的矩形形状

    我想创建一个具有两种纯色 水平 的矩形形状以实现如下所示 我听说过layer list 我虽然可以用它来包含两个不同颜色的矩形 但它似乎只能垂直放置形状 有没有办法使用 lalyer list 来实现这一点 或者我应该使用完全不同的东西 我
  • iPad 标题栏。导航栏还是工具栏?

    我看到很多 iPad 应用程序都有很酷的标题栏 这些似乎是导航栏和工具栏的组合 它们通常有一个后退按钮和一个标题以及其他按钮 导航栏仅支持左侧项目 右侧项目和标题视图 而且工具栏并不真正支持后退按钮或标题 那么 如何在 UINavigati
  • java servlet 中出现令人惊讶的结果

    我在 java servlet 中得到了令人惊讶的结果 我将输入参数 日期 从 jsp 传递到 servlet 如下所示
  • 由于文件路径中有特殊字符,OpenCv imwrite 不起作用

    当文件路径具有特殊字符 例如 时 我无法保存图像 这是来自 Python 3 shell 的测试 gt gt gt cv2 imwrite gel test jpg frame True gt gt gt cv2 imwrite gel t
  • 如何在 C 中打印“off_t”? [复制]

    这个问题在这里已经有答案了 可能的重复 我应该如何打印像off t和size t这样的类型 https stackoverflow com questions 586928 how should i print types like off
  • 如何告诉 git 显示我在上次提交中所做的更改的差异? [复制]

    这个问题在这里已经有答案了 With git 如何查看上次提交的更改 我的意思是我想看到我的最后一次提交和之前的提交之间的差异 我知道我可以在 Github 浏览器上看到它 但我想在终端上的本地提交历史记录中看到它 我知道我可以在提交之间进
  • 无法为 android 中的微调器设置 OnItemClickListener

    在定制的RecyclerView Adapter
  • 如何生成随机概率分布 julia

    我在字典中有一个键列表 我想为每个项目分配一个 0 到 1 之间的数字 使分配的数字总和为 1 如何做到这一点 我尝试使用 rand 进行一些操作 但没有成功 有什么建议么 更数学的答案是使用狄利克雷分布 https en wikipedi
  • 类组件的 useEffect 替代品

    我刚刚了解到在功能组件中我可以使用useEffect留意任何副作用 例如 使用时localStorage 这确保我的状态与效果挂钩 我想在我的基于类的组件中具有类似的功能localStorage 我怎样才能确保我的状态在发生任何变化时立即更