Platform
Official documentation React Native provides a module that detects the platform in which the app is running. You can use the detection logic to implement platform-specific code. Use this option when only small parts of a component are platform-specific.
if (Platform.os === Platform.ios) {
// your code
}
Platform.os
can be
Platform.ios
when running on iOS
Platform.android
when running on Android.
Platform.web
when running on the web (via react-native-web
).
If you need an unsupported platform, you can use Platform.unsafe(string)
.
For conditional style depending on the platform, you can do the following:
let styles =
StyleSheet.create(
Style.{
"wrapper":
style(
~width=pct(Platform.os == Platform.ios ? 100. : 200.),
(),
),
},
);
⚠️ Unsupported.
This feature isn't relevant with ReasonML. Instead you can do the following:
let styles =
StyleSheet.create(
Style.{
"wrapper":
style(
~width=
(
switch (Platform.os) {
| os when os == Platform.ios => 100.
| os when os == Platform.android => 200.
| os when os == Platform.web => 250.
| os when os == Platform.unsafe("windows") => 300.
| _ => 150.
}
)
->pct,
(),
),
},
);
Also since spreading things in ReasonML is not supported (because of the unsafety aspect), it's even less relevant to have this binding.