javascript - 以跨平台方式处理 React/React-Native 中的文本输入事件?(e.target.value 与 e.nativeTarget.text)
问题描述
我正在尝试跨平台重用尽可能多的代码。我有一些input
我渲染的元素是由同一个容器元素渲染的。
在 React 中我是这样处理的:
handleFieldChange(fieldName, evt) {
const { formValues } = this.state;
formValues[fieldName] = evt.target.value; // This line differs
this.setState({ formValues });
}
但是在 React Native:
evt.target
中是一个数字,似乎唯一的方法是:
handleFieldChange(fieldName, evt) {
const { formValues } = this.state;
formValues[fieldName] = evt.nativeTarget.text; // This line differs
this.setState({ formValues });
}
有没有我可以跨平台使用的代码?
解决方案
我建议制作一个通用 InputField 组件来检查您正在使用的平台并呈现相应的组件,并且在此组件中您应该根据平台处理事件。将使用这个新组件的其他组件根本不应该关心平台。
推荐阅读
- ios - WKWebView 中的 PDF 被导航栏截断?
- ruby-on-rails - 具有多个相关地址的 rails 模型
- javascript - Javascript (ES8) - 从父类获取类的静态值
- c - 接受一个字符串并“过滤掉”所有非数字字符以及C中除第一个点之外的所有字符的函数?
- node.js - 安装 npm 会删除 eosio 包,反之亦然?
- matlab - Matlab eig 没有输出已知的输出向量
- sql - sql如何在条件中返回列表
- java - 单击输入时如何解决扫描仪错误
- symfony - 如何将 api-platform {id} 更改为其他名称?
- java - 在java中为两个不使用继承的类创建通用方法