React Native 中 TextInput 的 onChange 事件的 TypeScript 类型

Posted

技术标签:

【中文标题】React Native 中 TextInput 的 onChange 事件的 TypeScript 类型【英文标题】:TypeScript types for TextInput's onChange event in React Native 【发布时间】:2020-06-18 05:14:55 【问题描述】:

我有一个使用 TypeScript 的 React Native Expo 项目。如何为TextInputonChange 事件添加类型?

    <TextInput
      keyboardType="numeric"
      value=`$value`
      onChange=(e: React.FormEvent<htmlInputElement>): void => 
        set( value: e.target.value );
      
    />

我收到此错误:

TS2339:类型“EventTarget”上不存在属性“值”

【问题讨论】:

这能回答你的问题吗? Typescript input onchange event.target.value @JaredSmith 不,我仍然遇到错误。 React Native 是否使用与 React 相同的类型? 在某种程度上不:DOM 与 ios/android 构建块的子集 React-native 使用是不同的,但如果类型是 那个,我会有点惊讶> 不同。我认为您的问题(正如链接上的答案所指出的那样)是目标与 currentTarget 的区别。对于目标,编译器必须假设最坏的情况,并且并非所有 DOM 元素(或本机视图)都会具有 value 属性。 【参考方案1】:

事件的类型是NativeSyntheticEvent&lt;TextInputChangeEventData&gt;

您可以从“react-native”导入这两个。

它有一个名为 nativeEvent 的道具,还有文字。

import  View, TextInput, NativeSyntheticEvent, TextInputChangeEventData  from "react-native";

...

const onChange = (e: NativeSyntheticEvent<TextInputChangeEventData>): void => 
    const value = e.nativeEvent.text;
    doStuff(value);
  
  
...

<TextInput onChange=onChange />
  

【讨论】:

太棒了!我感觉关于 React Native with Typescript 的文档很少,你能推荐什么吗?

以上是关于React Native 中 TextInput 的 onChange 事件的 TypeScript 类型的主要内容,如果未能解决你的问题,请参考以下文章

react-native中ios的TextInput下划线颜色

如何计算 React Native 中 TextInput 组件中文本的宽度?

TextInput 在 ScrollView React Native 中消失

React Native 之 TextInput(多个语法知识)

ScrollView 在 React Native 中删除 TextInput 键盘

React-Native 自动完成输入中的 textInput 中的边框