React Native——特定平台代码

前言

特定平台代码,故名思意,就是针对不同的平台 IOS 和 Android 编写不同的代码。简而言之,就是做兼容。在浏览器环境中一般是 UA 判断之类的。而在移动端开发中,React Native 提供了两个方法来区分平台。(需要注意的是,一些内置的组件也会只在特定平台上有效)

Platform 模块

Platform 模块是 RN 提供的一个检查当前平台的模块,Platform.OS 在 IOS 上为 “ios”,在 Android 上为 “android”。
例如:

import { Platform, StyleSheet } from 'react-native'

const styles = StyleSheet.create({
	width: Platform.OS === 'android' ? 300 : 100
})

需要注意的是 Platform 模块还有一个 select 方法,可以根据不同的平台编写不同的样式。
例如:

  1. 针对不同平台设置不同颜色
import { Platform, StyleSheet } from 'react-native'

const styles = StyleSheet.create({
	containter: {
		flex: 1,
		...Platform.select({
			ios: {
				backgroudColor: #fff
			},
			android: {
				backgroundColor: #faa
			}
		})
	}
})
  1. 针对不同平台返回不同组件
import { Platform, StyleSheet } from 'react-native'

// 此时必须是自执行函数
const Component = Platfrom.select({
	ios: () => require("IOSComponent"),
	android: () => require("AndroidComponent")
})()

并且 Platform 模块还可以获取当前 IOS 或 Android 版本。
例如:

import { Platform } from 'react-native'

console.log(Platform.Version)

特定平台扩展名

RN 会在在运行的时候会对文件目录进行判断,会根据文件目录具有的特定扩展名加载平台所对应的文件。
例如:

定义组件目录
Button.ios.js
Button.android.js

代码中引用
import Button from './Button'

PS:这就让我想起 Android 开发中对于不同语言也会根据文件目录加载对于语言的 .xml。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值