以跨平台方式在React / React-Native中处理文本输入事件? (e.target.value与e.nativeTarget.text)

时间:2018-12-15 22:00:43

标签: javascript reactjs react-native events

我正在尝试跨平台尽可能多地使用代码。我已经渲染了一些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 });
  }

我可以在任何平台上使用任何代码吗?

1 个答案:

答案 0 :(得分:0)

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