React Native cross-platform development practice: from zero to one
December 23, 2024

React Native cross-platform development practice: from zero to one

Recently, I am learning React Native cross-platform development. How to develop the first basic application from scratch and package it for release:


1.Environment preparation

  • Install Node.js
  • Install React Native CLI
  • Set up an Android or iOS development environment (depending on which platform you want to support)


2. Create a new project Use React Native CLI to create a new project:

npx react-native init MyProject
Enter full screen mode

Exit full screen mode


3. Check the project structure. The new project will contain the following key files and directories:

  • index.js: The entry point of the application
  • App.js: The main components of the application
  • android and ios directories: contain project configurations for Android and iOS platforms respectively
  • package.json: project dependencies and metadata


4. Run the application

For Android:

npx react-native run-android
Enter full screen mode

Exit full screen mode

For iOS:

npx react-native run-ios
Enter full screen mode

Exit full screen mode


5. Write your first component

Open App.js, replace the default content, and create a simple Hello World component:

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

   const App = () => {
     return (
       <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
         <Text>Hello, React Native!Text>
       View>
     );
   };

   export default App;
Enter full screen mode

Exit full screen mode


6. Add styles You can add CSS styles in App.js or a separate styles.js file:

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

   const styles = StyleSheet.create({
     container: {
       flex: 1,
       justifyContent: 'center',
       alignItems: 'center',
       backgroundColor: '#F5FCFF',
     },
   });

   const App = () => {
     return (
       <View style={styles.container}>
         <Text style={{ fontSize: 20, color: 'blue' }}>Hello, React Native!Text>
       View>
     );
   };

   export default App;
Enter full screen mode

Exit full screen mode


7. Install third-party libraries

Suppose we want to use the react-native-vector-icons library to add icons:

   npm install react-native-vector-icons
   npx react-native link react-native-vector-icons
Enter full screen mode

Exit full screen mode


8. Use a third-party library to update the App.js import icon:

   import React from 'react';
   import { View, Text } from 'react-native';
   import Icon from 'react-native-vector-icons/Ionicons';

   const App = () => {
     return (
       <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
         <Icon name="md-heart" size={32} color="#900" />
         <Text style={{ fontSize: 20, color: 'blue' }}>Hello, React Native!Text>
       View>
     );
   };

   export default App;
Enter full screen mode

Exit full screen mode


9. After executing and testing each modification, re-execute the application to see the changes.


10. Added routing and navigation

In order to jump between pages in the application, we can use the react-navigation library. First time installation:

    npm install @react-navigation/native
    npm install react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view
Enter full screen mode

Exit full screen mode

Then build the navigation structure:

    import React from 'react';
    import { NavigationContainer } from '@react-navigation/native';
    import { createStackNavigator } from '@react-navigation/stack';
    import HomeScreen from './screens/HomeScreen';
    import DetailsScreen from './screens/DetailsScreen';

    const Stack = createStackNavigator();

    const App = () => {
      return (
        <NavigationContainer>
          <Stack.Navigator>
            <Stack.Screen name="Home" component={HomeScreen} />
            <Stack.Screen name="Details" component={DetailsScreen} />
          Stack.Navigator>
        NavigationContainer>
      );
    };

    export default App;
Enter full screen mode

Exit full screen mode

create HomeScreen.js and DetailsScreen.js exist screens directory and write the corresponding components.


11. Network requests use the axios library to make HTTP requests:

    npm install axios
Enter full screen mode

Exit full screen mode

Send the request in the component:

    import React, { useState, useEffect } from 'react';
    import axios from 'axios';

    const HomeScreen = () => {
      const [data, setData] = useState([]);

      useEffect(() => {
        axios.get('https://jsonplaceholder.typicode.com/posts')
          .then(response => setData(response.data))
          .catch(error => console.error(error));
      }, []);

      return (
        // 渲染数据
      );
    };

    export default HomeScreen;
Enter full screen mode

Exit full screen mode


12. Status management

Use Redux or MobX for state management. Here we take Redux as an example:

    npm install redux react-redux
    npm install @reduxjs/toolkit
Enter full screen mode

Exit full screen mode

Create the store, actions and reducers, and then set the Provider in App.js:

    import React from 'react';
    import { Provider } from 'react-redux';
    import store from './store';

    const App = () => {
      return (
        <Provider store={store}>
          {/* Other codes */}
        Provider>
      );
    };

    export default App;
Enter full screen mode

Exit full screen mode


13. Animation uses the react-native-reanimated library to implement animation:

    npm install react-native-reanimated
Enter full screen mode

Exit full screen mode

Add animation effects to components:

    import React from 'react';
    import { Animated, View, Text } from 'react-native';
    import { interpolate } from 'react-native-reanimated';

    const App = () => {
      const animatedValue = new Animated.Value(0);

      const opacity = interpolate(animatedValue, {
        inputRange: [0, 1],
        outputRange: [0, 1],
      });

      const animatedStyle = {
        opacity,
      };

      return (
        <Animated.View style={[animatedStyle]}>
          <Text>Hello, React Native!Text>
        Animated.View>
      );
    };

    export default App;
Enter full screen mode

Exit full screen mode


14.Performance optimization

  • Use PureComponent or React.memo to reduce unnecessary rendering
  • Optimize long lists using FlatList or SectionList
  • Use shouldComponentUpdate or useMemo, useCallback life cycle methods
  • Optimize network requests and image loading
  • Use AsyncStorage or redux-persist to store state when appropriate


15. Publish the application

  • Android: Generate a signed APK and upload it to Google Play Console
  • iOS: Configure Xcode and submit to App Store Connect

2024-12-23 13:14:01

Leave a Reply

Your email address will not be published. Required fields are marked *