Example of Popup Dialog in React Native

React Native Popup Dialog

Here is an Example of Popup Dialog in React Native. We will use PopupDialog component provided by react-native-popup-dialog to make a Dialog.

We can use Alert instead of the popup dialog if we just want to show the text but when it comes to the customization of alert content we have to use popup dialog.

How to use Popup Dialog Component?

<Dialog
  onDismiss={() => {
    this.setState({ defaultAnimationDialog: false });
  }}
  width={0.9}
  visible={this.state.defaultAnimationDialog}
  rounded
  actionsBordered
  dialogTitle={
    <DialogTitle
      title="Default Animation Dialog Simple"
      style={{
        backgroundColor: '#F7F7F8',
      }}
      hasTitleBar={false}
      align="left"
    />
  }
  footer={
    <DialogFooter>
      <DialogButton
        text="CANCEL"
        bordered
        onPress={() => {
          this.setState({ defaultAnimationDialog: false });
        }}
        key="button-1"
      />
      <DialogButton
        text="OK"
        bordered
        onPress={() => {
          this.setState({ defaultAnimationDialog: false });
        }}
        key="button-2"
      />
    </DialogFooter>
  }>
  <DialogContent
    style={{
      backgroundColor: '#F7F7F8',
    }}>
    <Text>Here is an example of default animation dialog</Text>
  </DialogContent>
</Dialog>

Other components provided by Popup dialog

Popup dialog also provides the following components:

  1. DialogTitle
  2. DialogButton
  3. SlideAnimation
  4. ScaleAnimation
  5. FadeAnimation

This example contains three types of popup dialogs:

  1. Default Animation Dialog
  2. Scale Animation Dialog
  3. Slide Animation Dialog

To Make a React Native App

Getting started with React Native will help you to know more about the way you can make a React Native project. We are going to use react-native init to make our React Native App. Assuming that you have node installed, you can use npm to install the react-native-cli command line utility. Open the terminal and go to the workspace and run

npm install -g react-native-cli

Run the following commands to create a new React Native project

react-native init ProjectName

If you want to start a new project with a specific React Native version, you can use the --version argument:

react-native init ProjectName --version X.XX.X
react-native init ProjectName --version react-native@next

This will make a project structure with an index file named App.js in your project directory.

Installation of Dependency

To use PopupDialog we have to install react-native-popup-dialog package.

To install this open the terminal and jump into your project

cd ProjectName

Run the following command

npm install react-native-popup-dialog --save

This command will copy all the dependencies into your node_module directory. –save is optional, it is just to update the react-native-popup-dialog dependency in your package.json file.

Code for React Native Popup Dialog

Now Open App.js in any code editor and replace the code with the following code

App.js

/*This is an Example of PopuUp Dialog Example in React Native*/
import React, { Component } from 'react';
import { Button, View, Text, StyleSheet } from 'react-native';
import Dialog, {
  DialogTitle,
  DialogContent,
  DialogFooter,
  DialogButton,
  SlideAnimation,
  ScaleAnimation,
} from 'react-native-popup-dialog';

export default class App extends Component {
  state = {
    defaultAnimationDialog: false,
    scaleAnimationDialog: false,
    slideAnimationDialog: false,
  };

  render() {
    return (
      <View style={{ flex: 1 }}>
        <View style={styles.container}>
          <Button
            title="Default Animation Dialog"
            onPress={() => {
              this.setState({
                defaultAnimationDialog: true,
              });
            }}
          />

          <Button
            title="Scale Animation Dialog"
            onPress={() => {
              this.setState({
                scaleAnimationDialog: true,
              });
            }}
          />

          <Button
            title="Slide Animation Dialog"
            onPress={() => {
              this.setState({
                slideAnimationDialog: true,
              });
            }}
          />
        </View>

        <Dialog
          onDismiss={() => {
            this.setState({ defaultAnimationDialog: false });
          }}
          width={0.9}
          visible={this.state.defaultAnimationDialog}
          rounded
          actionsBordered
          dialogTitle={
            <DialogTitle
              title="Default Animation Dialog Simple"
              style={{
                backgroundColor: '#F7F7F8',
              }}
              hasTitleBar={false}
              align="left"
            />
          }
          footer={
            <DialogFooter>
              <DialogButton
                text="CANCEL"
                bordered
                onPress={() => {
                  this.setState({ defaultAnimationDialog: false });
                }}
                key="button-1"
              />
              <DialogButton
                text="OK"
                bordered
                onPress={() => {
                  this.setState({ defaultAnimationDialog: false });
                }}
                key="button-2"
              />
            </DialogFooter>
          }>
          <DialogContent
            style={{
              backgroundColor: '#F7F7F8',
            }}>
            <Text>Here is an example of default animation dialog</Text>
          </DialogContent>
        </Dialog>

        <Dialog
          onTouchOutside={() => {
            this.setState({ scaleAnimationDialog: false });
          }}
          width={0.9}
          visible={this.state.scaleAnimationDialog}
          dialogAnimation={new ScaleAnimation()}
          onHardwareBackPress={() => {
            console.log('onHardwareBackPress');
            this.setState({ scaleAnimationDialog: false });
            return true;
          }}
          dialogTitle={
            <DialogTitle
              title="Scale Animation Dialog Sample"
              hasTitleBar={false}
            />
          }
          actions={[
            <DialogButton
              text="DISMISS"
              onPress={() => {
                this.setState({ scaleAnimationDialog: false });
              }}
              key="button-1"
            />,
          ]}>
          <DialogContent>
            <View>
              <Text>
                Here is an example of scale animation dialog. Close using back
                button press
              </Text>
              <Button
                title="Close"
                onPress={() => {
                  this.setState({ scaleAnimationDialog: false });
                }}
                key="button-1"
              />
            </View>
          </DialogContent>
        </Dialog>

        <Dialog
          onDismiss={() => {
            this.setState({ slideAnimationDialog: false });
          }}
          onTouchOutside={() => {
            this.setState({ slideAnimationDialog: false });
          }}
          visible={this.state.slideAnimationDialog}
          dialogTitle={<DialogTitle title="Slide Animation Dialog Sample" />}
          dialogAnimation={new SlideAnimation({ slideFrom: 'bottom' })}>
          <DialogContent>
            <Text>
              Here is an example of slide animation dialog. Please click outside
              to close the the dialog.
            </Text>
          </DialogContent>
        </Dialog>
      </View>
    );
  }
}

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

To Run the React Native App

Open the terminal again and jump into your project using.
cd ProjectName
To run the project on an Android Virtual Device or on real debugging device
react-native run-android
or on the iOS Simulator by running
react-native run-ios (macOS only).

Output Screenshots

      

Output in Online Emulator

This is how you can make a popup dialog in React Native. If you have any doubts or you want to share something about the topic you can comment below or contact us here. There will be more posts coming soon. Stay tuned!

Hope you liked it. 🙂


Related Posts

7 thoughts on “Example of Popup Dialog in React Native”

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.