Skip to content
This repository has been archived by the owner on Aug 5, 2019. It is now read-only.

React Native swiss army knife tools to platform conditional render

License

Notifications You must be signed in to change notification settings

lucasferreira/react-native-platform-render

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-platform-render

React Native swiss army knife tools to platform conditional render

npm version npm downloads npm licence

This module provides a couple of functions and components to help in conditional render for a specifically platform (Android or iOS). Some of this techniques can help you in that struggling work of keep a single code base for cross-platform projects.

Installation

npm install react-native-platform-render --save

Conditional Container

The "PlatformView" component can take care of rendering or not your children components by filter the "target" attribute/prop.

import React, { Component } from 'react';
import { StyleSheet, Text, View } from 'react-native';

import { PlataformView } from 'react-native-platform-render';

class AwesomeProject extends Component {
  render() {
    return (
      <PlataformView style={{borderWidth: 1, borderColor: 'red'}}>
        <Text target="ios">
          Here you are at iOS!
        </Text>
        <Text target="android">
          Here you are at ANDROID!
        </Text>
      </PlataformView>
    );
  }
}

Higher-Order Component to work with RN Components

This HO Component enhance your custom or native components with the "target" attribute/prop behavior.

import React, { Component } from 'react';
import { Text, View } from 'react-native';

import { PlatformRender } from 'react-native-platform-render';

const PRText = PlatformRender(Text); // Enhancing `Text` component with the "target" attribute/prop behavior.

class AwesomeProject extends Component {
  render() {
    return (
      <View style={{borderWidth: 1, borderColor: 'blue'}}>
        <PRText target="ios">
          Here you are at iOS!
        </PRText>
        <PRText target="android">
          Here you are at ANDROID!
        </PRText>
      </View>
    );
  }
}

Conditional Pure Function

This function/method works with two arguments, first one is the iOS content and second is the Android content for rendering.

import React, { Component } from 'react';
import { Text, View } from 'react-native';

import { PlataformSelect } from 'react-native-platform-render';

class AwesomeProject extends Component {
  render() {
    const conditionalContent = PlataformSelect(
      <Text>
        Here you are iOS!
      </Text>,
      <Text>
        Here you are ANDROID!
      </Text>
    );

    return (
      <View style={{borderWidth: 1, borderColor: 'blue'}}>
        {conditionalContent}
      </View>
    );
  }
}

License

MIT

About

React Native swiss army knife tools to platform conditional render

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published