首页 > 解决方案 > 以跨平台方式处理 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 });
  }

有没有我可以跨平台使用的代码?

标签: javascriptreactjsreact-nativeevents

解决方案


我建议制作一个通用 InputField 组件来检查您正在使用的平台并呈现相应的组件,并且在此组件中您应该根据平台处理事件。将使用这个新组件的其他组件根本不应该关心平台。


推荐阅读