React Native Web - 控制View生成的html标签?

React Native Web - Control the html tag generated by View?

我有一个 React Native Web 项目。有一次,我希望我的 View 而不是生成 <div> 来生成 <label> 元素。

有办法控制吗?如果这不是针对浏览器环境编译的,我希望有某种 htmlTag 属性会被忽略。

制作自己的 View 包装器如何?它可以检查它 运行 在什么环境中,然后如果它在浏览器中,那么你可以 return 标签元素代替。

有一个 component 道具,但它被移除以支持 accessibilityRole (Remove component prop)。

您可以使用 accessibilityRole 指定 label 标签,甚至可以使用它创建自定义元素:

function Label({ text }) {
  return <View accessibilityRole="label">{text}</View>
}

然后像这样使用它:

export default class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <View>
          <Label text="Test input:"/>
          <TextInput name="test-input"/>
        </View>
      </View>
    );
  }
}

检查这个工作世博会小吃:https://snack.expo.io/@clytras/change-rn-web-div-tag

您还可以在 TextInput 上使用 accessibilityLabel 道具,这将在 React Native 代码编译为 html for web 时向其添加 aria-label 道具.
在可访问性方面,这实现了与 label 属性相同的效果。请参阅有关可访问性的 React Native 网络文档:https://necolas.github.io/react-native-web/docs/accessibility/

export default class App extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <View>
          <TextInput accessibilityLabel="test-input" name="test-input"/>
        </View>
      </View>
    );
  }
}