1.1.4 • Published 4 years ago

@tuimedia/react-native-page v1.1.4

Weekly downloads
-
License
MIT
Repository
bitbucket
Last release
4 years ago

@tuimedia/react-native-page

  • This package contain React Native components that can render TuiPageBundle articles in your React Native app.

How do I get set up?

redux integration

import { configureStore } from "@reduxjs/toolkit";
// ... your other imports
import { reducer as pageReducer } from "@tuimedia/react-native-page";

export const store = configureStore({
  reducer: {
    // your other reducers
    page: pageReducer,
  },
});

export default store;

TuiPage usage

// import Wrapper
import { TuiPage } from "@tuimedia/react-native-page";

// optiional: override or add custom components
import PageVideo from "./path/to/PageVideo";
import PagePlaylist from "./path/to/PagePlaylist";

const components = {
  PageVideo,
  PagePlaylist,
};

// render
return (
  <TuiPage
    state="live" // page state
    axios={axios} // your axios instance ( optional )
    language={language.code} // language code
    url={`/api/pages/${slug}`} // article data endpoint
    components={components} // your custom components and components overrides ( optional )
    getImage={getImage} // optional image url transformation fucntion
    theme={props.theme} // optional theme object
    serverUrl={Config.SERVER_URL} // your server URL
  />
);

Integrate custom components

import React from "react";
import PropTypes from "prop-types";
import { View, Text } from "react-native";

const PageExampleBlock = ({
  // extract props you need,
  block: { title, copy, url }, // <- already translated data>
  theme, // theme object
  windowDimensions: { width },
  serverUrl,
  getImage,
  components,
}) => {
  return (
    <View>
      <Text>{title}</Text>

      <Text>{author}</Text>

      <Text>{width}</Text>

      <Text>{serverUrl}</Text>

      <Text>{getImage && getImage(url, "PageExampleBlock")}</Text>

      <Text>{`registered components: ${JSON.stringify(
        Object.keys(components || {}),
        null,
        2
      )}`}</Text>

      <Text>{`theme: ${JSON.stringify(theme || {}, null, 2)}`}</Text>
    </View>
  );
};

PageExampleBlock.propTypes = {
  block: PropTypes.object,
  theme: PropTypes.object,
  windowDimensions: PropTypes.object,
  serverUrl: PropTypes.string,
  getImage: PropTypes.func,
};

export default PageExampleBlock;

and then make sure to register your component and pass it to TuiPage

import PageExampleBlock from "./path/to/PageExampleBlock";

const components = {
  // ... your other components,
  PageExampleBlock,
};

// <TuiPage components={components} />

API

  • TuiPage

see above

  • renderBlock use it if you need to render children blocks

  • reducer reducer to add to your redux reducers

  • translatedBlock the function that is used to translate content in the user langauge, advanced usage only

  • unsupportedBlock this is the component that is rendered if a block has not been done/registered

  • renderError helper function that renders an error in a ReactNative Text Wrapper, so you can worry about that error later.

  • components Available basic components available out of the box, they can be overwritten.

    • PageHero
    • PageText
    • PageImage

Who do I talk to?

  • xavierb@tuimedia.com
  • xaviermod@tuimedia.com
  • matt@tuimedia.com
1.1.4

4 years ago

1.1.3

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.1.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago