首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使动态类型可调用(响应自定义钩子)

如何使动态类型可调用(响应自定义钩子)
EN

Stack Overflow用户
提问于 2021-03-12 03:03:28
回答 1查看 288关注 0票数 0

假设我有一个自定义钩子,它返回数组中的3件东西

代码语言:javascript
运行
AI代码解释
复制
export const useInput = (store: string) => {
  const [value, setValue] = React.useState(store);

  const bind = {
    value,
    onChange: (e: InputChangeEvent) => {
      setValue(e.target.value)
    }
  } 

  const reset = () => {
    setValue(store)
  }

  return [value, bind, reset]
}

并在组件中使用它

代码语言:javascript
运行
AI代码解释
复制
const SomeComponent = () => {
  const [name, bindName, resetName] = useInput('')
  const [email, bindEmail, resetEmail] = useInput('')
  const [confirmEmail, bindConfirmEmail, resetConfirmEmail] = useInput('')

  const onSubmitHandler = (e: FormSubmitEvent) => {
    e.preventDefault()
    console.log(`${name} ${email} ${confirmEmail}`)
    resetName();
  }
  return (
    <React.Fragment>
      <form onSubmit={onSubmitHandler}>
        <div className={styles.modalTitle}>
          {homeText.action}
        </div>
        <div className={styles.textInputContainer}>
          <input type="text" placeholder={homeText.plName} {...bindName}/>
          <ErrorMessage message={'sad'}/>
        </div>
        <div className={styles.textInputContainer}>
          <input type="email" placeholder={homeText.plEmail} {...bindEmail}/>
        </div>
        <div className={styles.textInputContainer}>
          <input type="email" placeholder={homeText.plConfirm} {...bindConfirmEmail}/>
        </div>
        <button>Submit</button>
      </form>
    </React.Fragment>
  )
}

现在,resetName()或任何重置都是不可调用的,因为其中有3种类型,其中1种认为不应该像string那样调用,如何更改useInput的返回类型,使我能够调用可调用的() => void

在调用resetName()时,ts不想要的确切内容是This expression is not callable. Not all constituents of type 'string | { value: string; onChange: (e: InputChangeEvent) => void; } | (() => void)' are callable. Type 'string' has no call signatures.

在我执行可调用的东西之前,我头上的一个解决方案是操纵类型并将其缩小到单个类型。还有其他想法吗?

更新

那么,做类型断言是个好主意吗?目前,我能够通过断言(as) (() => void)来使其工作。

代码语言:javascript
运行
AI代码解释
复制
const newResetName = resetName as (() => void)
newResetName()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-12 13:55:03

这里的主要问题是,useInput的返回类型是一个条目数组,其类型是您在return [value, bind, reset]中返回的3个值的交集,而不是您需要的元组。

您可以使用as const要求类型记录将数组值作为不可变元组对待,这将将useInput的返回类型更改为元组:

代码语言:javascript
运行
AI代码解释
复制
return [value, bind, reset] as const
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66598704

复制
相关文章
typecho程序增加url唯一标签canonical教程
本站从2023年1月18日接手后就发现包括首页、文章页、独立页面等页面存在首页分页、评论分页等的收录导致页面相同链接不同的问题。
cmsboy
2023/03/10
1.5K0
typecho程序增加url唯一标签canonical教程
SaaS行业其实岌岌可危
很多人认为,SaaS行业终于等到了发展的东风,是这场疫情的“受益”行业。在A股市场,和在线协同有关的企业股价甚至逆势飙升。
人称T客
2020/02/20
5440
Premium URL Shortener-高级URL缩短程序 +SaaS主题 v6.3.3
高级URL缩短器是一个PHP URL缩短器程序源码,具有许多独特功能。它可以将长链接缩短为短智能链接,以用于监控点击次数和优化营销活动。它提供了许多独特的工具来快速引导缩短链接的网站。其中一些功能包括地理位置定位,设备定位,高级会员资格,注意高级域名缩短器并不是一个普通的接口生成器,他需要绑定并解析到自己的短域名,并非市面上使用腾讯、微博、百度的短域名接口生成。域名跳转支持直接跳转,带导航栏跳转和跳转页跳转。
爱意不予
2022/05/11
8940
Premium URL Shortener-高级URL缩短程序 +SaaS主题 v6.3.3
python屏幕文字识别_python 图片文字识别 可截图识别
[Python] 纯文本查看 复制代码import osfrom aip import AipOcr
全栈程序员站长
2022/09/01
34K0
干货:ToB(SaaS)企业如何寻找可持续、可规模化、可盈利增长模式
来源 :SaaS随笔  ID:NotesOnSaaS ---- 一般而言,对2C的初创企业来说,在打磨好产品后就有机会迎来爆发式增长。但很多2B的企业会发现,即使自己有了被市场认可的产品(Product Market Fit, PMF)并大量投入市场营销也无法真正达到稳定的高速增长,反而不断烧钱。其中的原因很可能在于2B企业忽略了PMF后、高速增长前的一个重要环节 - 寻找可持续、可规模化、可盈利的增长模式。 1. 增长模式与估值 我们这里可以从创业公司的估值谈起。 1.1 公司估值一般呈阶
腾讯SaaS加速器
2020/06/09
1.4K1
唯一识别码之UUID入门与实战
上一篇从身份证号是如何生成,来认识了中心机构下生成唯一标识的方法,这一篇来看看面对庞大的计算机世界,无中心机构时,那又如何生成唯一标识呢?
用户1462769
2019/08/18
4K0
Premium URL Shortener-高级URL缩短程序 +SaaS 主题 v6.3.3- 星泽V社
Premium URL Shortener是一个PHP URL缩短器脚本,具有许多独特的功能。它是从头开始构建的,并考虑了性能。其中一些功能包括地理定位,高级会员资格,强大的仪表板和管理面板以及一系列CMS工具,可帮助您实现梦想。此外,每次更新都会越来越好!
星泽V社
2022/05/04
4740
Premium URL Shortener-高级URL缩短程序 +SaaS 主题 v6.3.3- 星泽V社
新算法可干扰脸部识别系统
加拿大多伦多大学(University of Toronto)的研究人员宣布开发出了人工智能驱动的程序,可干扰脸部识别系统。
人工智能快报
2018/07/26
5880
动物面部识别大集合:现有可识别的动物种类及识别目的
面部识别技术存在着一些严重而持久的问题。这项技术作为一个整体在很大程度上受到了不准确和系统偏差的影响。无论谁使用这项技术,出于什么目的,这些算法都使用了从一个因种族和性别倾向而受阻的社会中提取的原始数据,而种族和性别倾向最终会产生类似的有偏见的结果。显然,对人类的监视伴随着一系列道德和道德难题。但是面部识别也可以识别动物,那么如何识别呢?
AiTechYun
2018/11/22
2.5K0
Premium URL Shortener 短网址系统的商业模板SaaS Theme v4.1
SaaS主题是Premium URL Shortener版本的完美主题。 它具有许多独特的功能,包括管理面板中的专用控制面板,您可以在其中更改外观,控制个人鉴定和公司地址。此次发布的版本是目前官方最新的3.8。
哈德森
2023/04/07
3760
Premium URL Shortener 短网址系统的商业模板SaaS Theme v4.1
人脸识别 | 如何解析URL,并给出人脸检测结果
本文介绍了如何解析URL,并给出人脸检测结果。首先使用urllib库从URL获取图像地址,然后调用cv2.CascadeClassifier()函数进行人脸检测。
码科智能
2018/01/02
1.1K0
解决Emlog博客程序伪静态后URL不是唯一地址的教程
使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,举个很简单的例子: 标准地址为:http://域名/1.html 但同时地址:http://域名/xx/1.html,http://域名/?
用户8099761
2023/05/10
1740
+SaaS,还是SaaS+?
来源:ToBSaaS|作者:戴珂 ---- 在我服务的SaaS公司中,最近发现了一个有趣的现象:除了原有的SaaS圈内公司,出现越来越多的SaaS圈外创业公司。 它们创始团队的从业经历跟SaaS不沾边,主要来自IT以外的其它行业。比如:制造、能源、食品、摄影、餐饮、设备、印刷、包装等等,相当于SaaS分类中的垂直领域。 它们的共同特点是:深谙行业、目标明确、务实而不纠结功能、推广低调,在各自的利基领域稳步深耕。 对于这类SaaS创业公司,因为它们是先有解决业务问题的诉求,然后才是SaaS方式的实现
腾讯SaaS加速器
2021/10/08
1.3K0
解决Emlog博客程序伪静态后URL不是唯一地址的教程
使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,举个很简单的例子: 标准地址为:http://域名/1.html但同时地址:http://域名/xx/1.html,http://域名/?
Youngxj
2018/06/06
1K1
SaaS-初识SaaS
IaaS(Infrastructure as a Service),即基础设施即服务。 提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(例如路由器、防火墙、负载均衡器等)的控制
cwl_java
2020/01/02
2K0
高度可扩展的类脑神经拟态硬件,完成了字母识别和人脸识别
基于单晶体管的神经元和突触可大幅降低硬件成本,加速神经拟态硬件的商业化。研究人员使用标准硅 CMOS 工艺制造的单晶体管神经元和突触。它们共同集成在同一个8英寸晶圆片上。
脑机接口社区
2022/08/17
6080
高度可扩展的类脑神经拟态硬件,完成了字母识别和人脸识别
【SaaS云】SaaS洞察(14) : SaaS的护城河
我们在上一篇文章《洞察:SaaS(13)入站销售和内容营销》中介绍了为什么 SaaS 产品应该优先考虑入站销售和内容营销。SaaS产品的护城河是什么,SaaS产品的护城河不是什么? 许多商业专家对“公司护城河”一词有自己的定义和示例。我现在不打算详细说明它们。护城河的简单概念是阻止您的竞争对手与您有效竞争的障碍,从而使您获得竞争优势。这道屏障就是公司的护城河。投资者经常询问护城河。设置壁垒的公司不太可能面临竞争,从而降低了投资风险。事实上,没有完美的护城河。除了答案之外,投资者在提出这个问题时,还会关注
架构师研究会
2022/04/24
1.9K0
【SaaS云】SaaS洞察(14) : SaaS的护城河
点击加载更多

相似问题

Java SaaS架构-可扩展性

20

使以编程方式添加的片段可单击,唯一可识别

45

错误: URL不使用可识别的协议

10

创建唯一和可识别的数字集

24

可伸缩性- SaaS可伸缩性足够吗?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文