Skip to content

tirthraj07/React-Native

Repository files navigation

React Native Tutorial

  1. Initial Setup
  2. Core Components
  3. View
  4. Text
  5. Image
  6. Scroll View
  7. Button
  8. Pressable
  9. Modal
  10. Status Bar
  11. Activity Indicator
  12. Alert
  13. Custom Components
  14. Project Structure
  15. StyleSheet API
  16. Multiple Styles
  17. Shadow and Elevation
  18. Style Inheritance
  19. Relative and Absolute Layout
  20. Dimensions API
  21. useWindowDimensions
  22. SafeAreaView
  23. Platform Specific Code
  24. FlatList
  25. Item Separator
  26. List Empty
  27. List Header and Footer
  28. SectionList

Setup Instructions

Step 1: Install Expo CLI

npm i -g expo-cli

Step 2: Create a new React Native Project

expo init <project-name>

Step 3: Start the project

cd <project-name>
npm start

UI Library

Async Storage

Note: Older version of Async Storage has been deprecated. Use the community package instead

SVG Setup

npm install --save-dev react-native-svg-transformer

For Expo SDK v41.0.0 or newer Merge the contents from your project's metro.config.js file with this config (create the file if it does not exist already).

metro.config.js:

const { getDefaultConfig } = require("expo/metro-config");

module.exports = (() => {
  const config = getDefaultConfig(__dirname);

  const { transformer, resolver } = config;

  config.transformer = {
    ...transformer,
    babelTransformerPath: require.resolve("react-native-svg-transformer/expo"),
  };
  config.resolver = {
    ...resolver,
    assetExts: resolver.assetExts.filter((ext) => ext !== "svg"),
    sourceExts: [...resolver.sourceExts, "svg"],
  };

  return config;
})();

Ideal Project Structure

Reference: React Native folder structure

AwesomeProject
  -src
    |--- assets
    |      |--- fonts
    |            |--- <<Your Fonts>>
    |      |--- images
    |            |--- << Your Images>>
    |
    |
    |--- route
    |      |--- screenName
    |      |      |--- index.js
    |      |      |--- styles.ts
    |      |      |--- helper.ts
    |      |      |--- screenName.tsx
    |      |      |--- screenName.test.tsx
    |      |      |--- useAnimated.ts (Optional)
    |      |      |--- components (Optional)
    |      |
    |      |--- screenName2
    |              |--- index.js
    |              |--- styles.ts
    |              |--- helper.ts
    |              |--- screenName.tsx
    |              |--- screenName.test.tsx
    |              |--- useAnimated.ts (Optional)
    |              |--- components (Optional)
    |
    |--- navigation
    |      |--- NavigationContainer
    |      |--- Route
    |      |--- NavigationService
    |      |--- linking
    |
    |--- networking
    |      |--- apiclient
    |      |--- requestInterceptor (Assuming axios)
    |      |--- responseInterceptor (Assuming axios)
    |      |--- urls
    |      |--- UserApi (You can create a file for a group of related api calls)
    |
    |--- components
    |      |---Button (This is will have same structure as the screen)
    |      |      |--- index.ts
    |      |      |--- Button.tsx
    |      |      |--- styles.ts
    |      |      |--- helper.ts
    |      |      |--- useAnimated.ts (Optional)
    |      |
    |      |--- <<Any other component>>
    |
    |--- hooks
    |      |--- useBackHandler.ts
    |      |--- useKeyboard.ts
    |      |--- useUploadImage.ts
    |      |--- useCamera.ts
    |      |--- <<Any other hook>>
    |
    |--- types
    |      |--- UserInterface
    |      |--- MediaInterface
    |      |--- AppConfigInterface
    |
    |--- redux
    |      |--- store.ts
    |      |--- slices
    |            |--- UserSlice
    |            |--- IntermittentSlice
    |            |--- ToastSlice
    |
    |--- utils
    |      |--- Analytics.ts
    |      |--- CommonUtils.ts
    |      |--- Logger.ts
    |      |--- ErrorManager.ts
    |      |--- DateTimeUtils.ts
    |      |--- EncryptedStore.ts
    |      |--- string.ts
    |      |--- constants.ts
    |      |--- enums.ts
    |
---------------------------- << MULTIPLE MODULE APP >> ----------------
    |--- Module_Name
          |--- routes
          |--- components
          |--- hooks

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published