react-mobile-stack-router
TypeScript icon, indicating that this package has built-in type declarations

1.6.3 • Public • Published

react-mobile-stack-router

NPM JavaScript Style Guide

Use with webview for creation pretty navigation 📱

Navigation like IOS

example

Navigation like Android

example

⭐️⭐️⭐️ Build a beautiful mobile app using React and Webview ⭐️⭐️⭐️

You will get navigation with animation like ios and android without unnecessary things 😏

Introducing "React Mobile Stack Router"

Description

react-mobile-stack-router is a comprehensive React library specifically crafted to provide a robust and feature-rich mobile navigation experience. Utilizing the power of React, this library empowers developers to create dynamic and efficient navigation stacks similar to those found in popular mobile platforms.

Regardless of your mobile application's complexity, react-mobile-stack-router provides an intuitive and efficient solution for managing the navigation stack. Streamline your development process and deliver an exceptional mobile navigation experience to your users with react-mobile-stack-router.

Start implementing react-mobile-stack-router in your React projects today and unlock a new level of mobile navigation prowess!

Install

npm install --save react-mobile-stack-router

or

yarn add react-mobile-stack-router

Usage

One stack of screens

import React from 'react';

import 'react-mobile-stack-router/dist/index.css';
import {
  MobileNavigation,
  Stack,
  StackScreen,
  useStackNavigation,
  useStackParams,
} from 'react-mobile-stack-router';

const FirstScreen = () => {
  const history = useStackNavigation('BaseStack');

  const openSecondScreen = () => {
    history.push('SecondScreen', { id: 1 });
  };

  return (
    <div className='screen'>
      <button onClick={openSecondScreen}>Open second screen</button>
    </div>
  );
};

const SecondScreen = () => {
  const history = useStackNavigation('BaseStack');

  const { id } = useStackParams();

  const openThridScreen = () => {
    history.push('ThirdScreen');
  };

  const backToFirstScreen = () => {
    history.back();
  };

  return (
    <div className='screen'>
      <button onClick={openThridScreen}>Open third screen</button>

      <button onClick={backToFirstScreen}>Back</button>
    </div>
  );
};

const ThridScreen = () => {
  const history = useStackNavigation('BaseStack');

  const backToSecondScreen = () => {
    history.back();
  };

  return (
    <div className='screen'>
      <button onClick={backToSecondScreen}>Back</button>
    </div>
  );
};

const MobileApp = () => {
  return (
    <MobileNavigation>
      <Stack name="BaseStack">
        <StackScreen name="FirstScreen">
          <FirstScreen />
        </StackScreen>

        <StackScreen name="SecondScreen">
          <SecondScreen />
        </StackScreen>

        <StackScreen name="ThirdScreen">
          <ThridScreen />
        </StackScreen>
      </Stack>
    </MobileNavigation>
  );
};

With tab navigation

import React from 'react';

import {
  Tabs,
  Tab,
  Stack,
  StackScreen,
  useMobileNavigation,
} from 'react-mobile-stack-router';

const Navigation = () => {
  const { changeStack } = useMobileNavigation();

  const handleChangeStack = (tabName: string) => {
    changeStack(tabName);
  };

  return (
    <Tabs onChange={handleChangeStack}>
      <Tab name="Main">
        <Stack name="Main" key="Main">
          <StackScreen name="TodoList">
            <FirstScreen />
          </StackScreen>

          <StackScreen name="Todo">
            <SecondScreen />
          </StackScreen>
        </Stack>
      </Tab>

      <Tab name="Settings">
        <Stack name="Settings" key="Settings">
          <StackScreen name="SettingsList">
            <ThirdScreen />
          </StackScreen>

          <StackScreen name="Todo">
            <FourthScreen />
          </StackScreen>
        </Stack>
      </Tab>
    </Tabs>
  );
};

/* App.tsx */
import 'react-mobile-stack-router/dist/index.css';
import {
  MobileNavigation,
  Stack,
  StackScreen,
} from 'react-mobile-stack-router';

const MobileApp = () => {
  return (
    <MobileNavigation>
      <Navigation />
    </MobileNavigation>
  );
};

Platform indication

Default value ios.

You can use Capacitor

import 'react-mobile-stack-router/dist/index.css';
import { MobileNavigation } from 'react-mobile-stack-router';

const MobileApp = () => {
  return (
    <MobileNavigation platform="android">{/* Your app */}</MobileNavigation>
  );
};

See example 👀

Props

MobileNavigation
Prop Values Default Values Required
platform ios, android ios true
children ReactNode none true

Stack
Prop Values Default Values Required
name string none true
children ReactNode none true
if Stack in Tab
key string none true

Tabs
Prop Values Default Values Required
onChange (tabName: string) => void none false

Tab
Prop Values Default Values Required
name string none true
children ReactNode none true

StackScreen
Prop Values Default Values Required
name string none true
children ReactNode none true

useStackNavigation
Prop Values Default Values Required
stackName string none true

License

MIT ©

Package Sidebar

Install

npm i react-mobile-stack-router

Weekly Downloads

6

Version

1.6.3

License

MIT

Unpacked Size

102 kB

Total Files

24

Last publish

Collaborators

  • skilldill