我可以在函数(不是函数组件)内使用钩子吗

2023-12-12

这是我想使用我的钩子的地方,以便我可以在应用程序运行期间更改一种状态。

export const simpleFunction = () => (state) => {
   // here is the hook 
}

我知道反应钩子应该用在功能组件中,但是上面提到的情况又如何呢?


是的你可以!这些函数称为自定义挂钩。但需要在功能组件内部使用这些自定义挂钩。所以从技术上讲,它现在是一个在 React 组件之外使用钩子的函数,但它们仍然需要稍后绑定到组件。

构建您自己的 Hooks 可让您将组件逻辑提取到可重用的功能.

Docs: https://reactjs.org/docs/hooks-custom.html

文档中的示例

import { useState, useEffect } from 'react';

function useFriendStatus(friendID) {
  const [isOnline, setIsOnline] = useState(null);

  useEffect(() => {
    function handleStatusChange(status) {
      setIsOnline(status.isOnline);
    }

    ChatAPI.subscribeToFriendStatus(friendID, handleStatusChange);
    return () => {
      ChatAPI.unsubscribeFromFriendStatus(friendID, handleStatusChange);
    };
  });

  return isOnline;
}

因为你的描述太短了,我不知道这是否是你要找的。希望我能帮忙:)

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

我可以在函数(不是函数组件)内使用钩子吗 的相关文章

  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • 为什么 window 与 Internet Explorer 中的 window.self 不同?

    关于我如何遇到这个问题有一个复杂的背景故事 但为什么self属性不完全等于窗口本身 在 Safari 和 Firefox 及其朋友中 结果如我所料 gt window window self true gt window window se
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • 在 React 应用程序的 shell 脚本中设置环境变量

    我正在尝试在 powershell 和 bash 脚本中设置一些环境变量 并在 ReactJS 应用程序中读取它们 shell脚本很简单 env AUTHDOMAIN some domain com env AUTHCLIENTID bun
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • Google Maps API (v3) 添加/更新标记

    编辑 它现在可以工作 但如果用户不允许或没有基于位置的服务 则不会加载 请参阅 jsfiddle 示例接受的答案评论 我已经浏览了一些教程和问题 但我无法安静地理解正在发生的事情 或者在这种情况下 没有发生 当用户单击链接时 我正在加载地图
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • javascript onclick create(element) div viz 弹出框

    我正在尝试制作一个弹出框 单击按钮即可调用该弹出框 这就是我到目前为止所得到的 http jsfiddle net WGPhG 2 这是一个真正可以做你想做的事情的小提琴 http jsfiddle net WGPhG 6 JS funct
  • PrimeFaces 验证器未触发

    由于 fileLimit 不再存在于 primefaces 3 4 中 我正在尝试解决实现验证器的问题 问题是方法 validate 从未被调用 这是我的验证器 FacesValidator value fileLimitValidator
  • 需要帮助使用 C++ 在 Linux 环境中的现有应用程序中生成击键

    我需要帮助在 LINUX 环境中的现有应用程序中生成击键 我完全知道 Dev C 中有一些库可以完全满足我的需求 但在 Windows 中 我需要在 Linux 中实现类似的功能 我用谷歌搜索了很多 但找不到任何解决方案 下面是 Dev C
  • .htaccess 重写 url 并删除 .php

    我想通过 htaccess 文件从 url 中删除 php 例如home php to home我在 htaccess 文件中使用以下重写规则 RewriteRule 1 php L 我还想重写网址 例如 detail php ca 38
  • C++为类成员函数分配一个lambda函数以提高计算效率[重复]

    这个问题在这里已经有答案了 更新 改写 我希望通过将类成员函数的运行时分配给以其他类成员为条件的许多函数之一来提高代码的计算效率 一种推荐的解决方案使用 include
  • 如何正确地将 Angular 2 (npm) 升级到最新版本?

    最近我开始了 Angular 2 教程https angular io docs ts latest tutorial 并停止了 Angular 2 beta 8 现在我恢复了教程 最新的测试版是测试版 14 如果我只是这样做npm 更新一
  • C# 中的 SafeFileHandle 是什么?何时应该使用它?

    当我还在学习 System IO 时 File Streamclass 的构造函数 我发现存在类型名为的重载构造函数SafeFileHandle 我尝试在互联网和MSDN文档上搜索 但我什么都看不懂 我发现even stranger这样的词
  • Android 小部件在 x 时间后更新

    我刚刚开始学习 Android 我正在尝试编写一个小部件 它每秒更新一次计数器 但在某个地方它缺少一些东西 我在屏幕上看到 1 我正在使用 Android 4 模拟器 package com ibluekey import java tex
  • 扩展 WP_List_Table / 处理插件管理中的复选框选项

    我正在开发一个 WordPress 插件 该插件的一部分需要扩展 WP List Table 并将该表中签入的任何项目存储到选项中 我已经设法弄清楚如何正确设置和显示所需的表格 但如何处理存储选中的选项 这是我到目前为止所得到的 class
  • 用于验证 dd-Mmm-yyyy 格式日期的正则表达式

    我有一个需要验证的文本输入框 用户应该只能输入 dd Mmm yyyy 格式的日期 例如 2013 年 6 月 1 日 2015 年 8 月 31 日等 或者他们应该能够输入 T 1 T 2 T 99 我可以使用什么样的正则表达式模式来验证
  • Cypher zip 集合

    如果我有两个集合 我如何将它们压缩在一起 with 1 2 3 as nums a b c as letters wat do return zipped a 1 b 2 c 3 可能无法动态分配映射键 例如 使用letters 但此查询将
  • 我可以在运行时以编程方式设置“android:layout_below”吗?

    创建时是否可以相对布局在运行时设置相当于android layout below以编程方式 Yes RelativeLayout LayoutParams params new RelativeLayout LayoutParams Vie
  • 如何在Python中从补丁中恢复3D图像?

    我有一个带有形状的 3D 图像DxHxW 我成功地将图像提取成补丁pdxphxpw 重叠的补丁 对于每个补丁 我都会进行一些处理 现在 我想从处理后的补丁生成图像 以便新图像必须与原始图像具有相同的形状 你能帮我做一下吗 这是我提取补丁的代
  • C# 编译器是否足够智能来优化这段代码?

    请忽略此问题中的代码可读性 从性能上来说 下面的代码是否应该这样写 int maxResults criteria MaxResults if maxResults gt 0 while accounts Count gt maxResul
  • 应用 tm 方法“stemCompletion”时一个变量的多个结果

    我有一个语料库 其中包含 3 个变量 ID 标题 摘要 的 15 个观察结果的期刊数据 我使用 R Studio 从 csv 文件中读取数据 每个观察一行 在执行一些文本挖掘操作时 我在使用 StemCompletion 方法时遇到了一些麻
  • 如何使用共享库运行 LLVM 解释器?

    I have mylib c具有某些功能的文件 我想使用我的这些功能 c文件作为已编译的 llvm 代码中的外部文件 我正在使用 LLVM 解释器 lli 4 0 我想知道我怎么知道lli使用我的函数 c file lli has a lo
  • 如何在delphi10中使用IdHTTP登录Instagram网站

    我正在尝试在 Delphi 中使用 idhttp 登录 Instagram 网站 我使用谷歌浏览器开发者工具来获取数据 这是我到目前为止所尝试过的 procedure TForm1 Button1Click Sender TObject v
  • 如何从数组中删除元素

    您好 我正在编写一些遗留代码 其内容类似于 for int i results Count 1 i gt 0 i if someCondition results Remove results i 对我来说 在仍然迭代循环的同时删除元素似乎
  • 如何从jslib插件Unity webgl调用外部javascript函数

    我现在正在开发一个 webgl 项目 我正在尝试从plugin jslib 调用index html 中的javascript 函数 我用谷歌搜索了一些方法 似乎它们不起作用 有没有正确且简单的方法来做到这一点 下面的代码是我尝试过的 索引
  • 我可以在函数(不是函数组件)内使用钩子吗

    这是我想使用我的钩子的地方 以便我可以在应用程序运行期间更改一种状态 export const simpleFunction gt state gt here is the hook 我知道反应钩子应该用在功能组件中 但是上面提到的情况又如