Home

Awesome

React Native ActionSheet

React Native ActionSheet is a JavaScript library for React Native that implements AcionSheet for Android. Its equivalent of ActionSheetIOS which is part of React Native.

For implementation the Android version I used android-ActionSheet.

Requirements

Installing React Native ActionSheet

npm install react-native-actionsheet-native --save
# OR
yarn add react-native-actionsheet-native

Preparing

React native >= 0.40.0

You can run inside of your project folder the next command:

react-native link react-native-actionsheet-native

React native >= 0.33.0 AND < 0.40.0

...
include ':react-native-actionsheet-native', ':app'
project(':react-native-actionsheet-native').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-actionsheet-native/android')
apply plugin: "com.android.application"
...
dependencies {
  ...
  compile project(":react-native-actionsheet") // <--- add this
  ...
}
import com.slowpath.actionsheet.ActionSheetPackage;  // <--- import and this

public class MyApplication extends Application implements ReactApplication {

  ......

  @Override
  protected List<ReactPackage> getPackages() {
    return Arrays.asList(
      new ActionSheetPackage(), // <------ add this line to you application
      new MainReactPackage());
  }

  ......

}

Updated your MainActivity

Now, you need to update your MainActivity. The MainActivity should extends ReactFragmentActivity for working with this library.

public class MainActivity extends ReactFragmentActivity {
  ...
}

Usage

From your JS files for both iOS and Android:

import ActionSheet from 'react-native-actionsheet';

ActionSheet.showActionSheetWithOptions({
  options: ['Disconnect', 'Cancel'],
  cancelButtonIndex: 1
},
(buttonIndex) => {
  const { dispatch } = this.props;
  if (buttonIndex === 0) {
    // Do something.
  }
});

Customization of Android action sheet

If you want to customize view of Android ActionSheet, you will need to read this article

License

React Native ActionSheet is BSD-licensed.