类组件的 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 替代品 的相关文章

随机推荐

  • 如何将日期转换为 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 我怎样才能确保我的状态在发生任何变化时立即更