React Native 中的平台特定组件

2024-04-29

我很确定这很简单,但我不太明白如何将它们结合在一起。目前我的应用程序在 iOS 中运行良好,但我使用了一些与 Android 不兼容的控件:

<View style={containerStyle}>
  <Text style={labelStyle}>Drink:</Text>
  <SegmentedControlIOS
    tintColor={styleBackground}
    style={{ flex: 2 }}
    values={['Value1', 'Value2']}
    selectedIndex={this.state.drink}
    onChange={(event) => {
      this.setState({ drink: event.nativeEvent.selectedSegmentIndex });
    }}
  />
  <View style={{ flex: 1 }} />
</View>

我想使用React-Native-Segmented-Android https://www.npmjs.com/package/react-native-segmented-android库来解决这个问题。我觉得我应该能够做类似的事情:

<View style={containerStyle}>
  <Text style={labelStyle}>Drink:</Text>
  const Component = Platform.select({
      ios: () => require('SegmentedControlIOS'),
      android: () => require('react-native-segmented-android'),
  })(      
    tintColor={styleBackground}
    style={{ flex: 2 }}
    values={['Value1', 'Value2']}
    selectedIndex={this.state.drink}
    onChange={(event) => {
      this.setState({ drink: event.nativeEvent.selectedSegmentIndex });
    }}
  />);
  <View style={{ flex: 1 }} />
</View>

但这(也许并不奇怪)不起作用。谁能指出我正确的方法?我知道我可以在 iOS/Android 上使用两个不同的文件,但如果可能的话,我宁愿将它们放在一个文件中。


我将创建一个 sepeare 组件,该组件将根据平台返回段,但您可以创建一个内部函数作为替代方案。在渲染中调用此函数来处理决定哪个平台应用程序运行并根据平台返回段。

_segmentPicker() {
        if (Platform.OS == 'android') {
          return (
              <SegmentedControlIOS
        tintColor={styleBackground}
        style={{ flex: 2 }}
        values={['Value1', 'Value2']}
        selectedIndex={this.state.drink}
        onChange={(event) => {
          this.setState({ drink: event.nativeEvent.selectedSegmentIndex });
        }}
      />
            );
        } else if (Platform.OS == 'ios') {
      return (
           <SegmentedControlIOS
        tintColor={styleBackground}
        style={{ flex: 2 }}
        values={['Value1', 'Value2']}
        selectedIndex={this.state.drink}
        onChange={(event) => {
          this.setState({ drink: event.nativeEvent.selectedSegmentIndex });
        }}
      />
            );
    }
  }


render(){
 return (
  <View>
   {this._segmentPicker()}
   .
   .
  </View>
 );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native 中的平台特定组件 的相关文章

随机推荐

  • 如何在 Spring Kafka 中以编程方式设置 Jsonserializer Type Value 方法

    所以我无法仅使用 yaml 为 JsonSerializer 配置 JavaType 方法 还不确定原因 但与此同时 我如何以编程方式设置它 我在文档中看到了它的代码 但是该代码到底需要在哪里运行 Spring Kafka JsonDese
  • 正方形检测找不到正方形

    我正在使用该程序方块 c在 OpenCV 库的示例中可用 它适用于每个图像 但我真的不明白为什么它不能识别该图像中绘制的正方形 After CANNY After DILATE The RESULT图像 红色 http img267 ima
  • 通过 javascript 按名称引用 HTML 元素(其中带有方括号)

    大家好 我正在尝试根据是否选中复选框或是否从下拉框中选择特定值来隐藏 显示不同的 html 元素 div 等 我想知道是否有人可以帮助我 html 元素是按照此 如下 的方式定义的 我不确定如何通过带有括号的名称来引用它 我正在使用的页面启
  • 使用 jQuery 动态创建并“单击”链接

    我想动态创建一个 a href 元素 然后 单击 它 全部无需修改页面 我正在尝试这个 a href nbsp a click 无济于事 它不是jquery 但它工作得很好 var link document createElement a
  • 概念面无法映射到物体面?

    我使用实体框架和 Db First 方法 我曾经有一个名为 Ranking 的表 我将其映射到带有一些继承的具体类的抽象基类 现在 我最近删除了所有继承 并选择只使用一个名为 Ranking 的具体类 但自从我把它改回来后 我得到以下运行时
  • PyCharm 找不到已安装的软件包:keras

    我在运行 Ubuntu 14 04 的 PC 上安装了 pycharm 2016 1 4 我已经使用安装了 Keras 一个 Python 包 pip install keras和 PyCharmcan找到它before 但它cannot找
  • redis 阻塞直到 key 存在

    我是 Redis 新手 想知道是否有办法能够await get通过它的键来获取值 直到该键存在 最小代码 async def handler data await self fetch key async def fetch key ret
  • 将预训练模型从 tfhub 转换为 tflite

    我正在尝试转换openimages v4 ssd mobilenet v2 https tfhub dev google openimages v4 ssd mobilenet v2 1到 tflite 使用 pip3 install te
  • JavaScript 中的 function($) 是什么意思?

    我意识到 只是命名指向 jQuery 对象的变量的约定 也是 document getElementById 的函数 但是 function 意味着什么吗 编辑 我其实是想说 function jQuery 抱歉造成混乱 但感谢您的回答 一
  • dmesg 和 /var/log/kern.log 之间的区别

    我正在修改kvm模块 并在内核代码中添加了printk语句 运行虚拟机后 printk为我提供了错误地址和有关客户操作系统的其他信息 我需要根据此信息生成统计信息 当我使用 dmesg 时 我只能看到错误地址 在内核空间中 即它们的地址高于
  • 警告:implode() [function.implode]:传递的参数无效

    我收到以下错误 警告 implode function implode 在第 1335 行的 wp content themes mytheme functions php 中传递的参数无效 at function my get tags
  • 如何平滑过渡 CSS 背景图片?

    主要的解决方案是 只需抛出一个加载屏幕 直到页面加载完毕 但我的目标是构建能够快速呈现基础知识的页面 无需加载屏幕 然后在图像和精美功能准备就绪时进行转换 所以我会等到它加载完毕 然后淡入 或者我会加载一个非常低分辨率的版本 然后在准备好时
  • PyCharm 未使用环境变量进行更新

    当我使用vim更新我的环境变量 在 bashrc PyCharm 不会立即获取更新 我必须关闭程序 源 bashrc再次 然后重新打开 PyCharm 有没有办法让 PyC harm 自动获取更改 或无需关闭 当任何进程创建时 它都会从其父
  • 获取自分离父分支以来的提交日志,包括父分支的最新提交

    我正在尝试创建一个快速的 bash 函数 该函数返回 oneline自当前分支从其父分支分支以来的每次提交的日志 以及包括先前提交的行 这是我到目前为止所拥有的 stolen from another Stack Overflow ques
  • 如何获取一维标量数组作为学说 dql 查询结果?

    我想从拍卖表的 id 列中获取一组值 如果这是一个原始 SQL 我会写 SELECT id FROM auction 但是当我在 Doctrine 中执行此操作并执行时 em gt createQuery SELECT a id FROM
  • 为什么 Java Swing html 字体渲染看起来这么糟糕?

    为了显示具有多种样式的复杂多行标签 我使用了 Swing 的 html 渲染功能 但最终得到了非常糟糕的字体渲染 我尝试明确设置字体系列 infoLabel setText span style font family Tahoma My
  • Json.NET:将嵌套数组反序列化为强类型对象

    我正在编写客户端应用程序 它应该处理服务器响应 响应采用 JSON 格式 我决定使用 Json NET 来反序列化它们 我无法简化或修改这些响应 在服务器端 此特定 JSON 响应的特殊困难在于不同的对象类型位于同一数组中 哈希值和文件数组
  • Numpy 提取网格数据的子集

    在我的应用程序中 我有一个从 meshgrid 命令获得的值矩阵及其坐标 经度 纬度 我想根据经度和纬度限制提取该矩阵的特定子区域 我已经尝试过这个解决方案 但它不起作用 我需要三个矩阵作为输出 一个用于数据 另外两个用于网格 Lons L
  • 应用程序突然崩溃 - 致命执行引擎错误 (7A0BC59E) (80131506)

    完全随机 我们的应用程序突然在其生产环境中崩溃 该应用程序在 Windows XP 和 net Framework 3 5 sp1 上运行 在应用程序中 我们提供 WCF 服务并使用串行端口 当应用程序崩溃时 它会在应用程序日志中留下消息
  • React Native 中的平台特定组件

    我很确定这很简单 但我不太明白如何将它们结合在一起 目前我的应用程序在 iOS 中运行良好 但我使用了一些与 Android 不兼容的控件