Files
react-native/packages/rn-tester/js/examples/Snapshot/SnapshotExample.js
Sam Zhou 5b96e90f77 Replace React.Element<any> and unnecessarily specific React.Element with React.MixedElement (#45923)
Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45923

Changelog: [Internal]

Reviewed By: gkz

Differential Revision: D60872182

fbshipit-source-id: b81fb43968c52cbfdb4a9fa57f1175aabc2a3939
2024-08-06 21:33:08 -07:00

75 lines
1.8 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
'use strict';
const ScreenshotManager = require('../../../NativeModuleExample/NativeScreenshotManager');
const {RNTesterThemeContext} = require('../../components/RNTesterTheme');
const React = require('react');
const {Alert, Image, StyleSheet, Text, View} = require('react-native');
class ScreenshotExample extends React.Component<{...}, $FlowFixMeState> {
state: any | {uri: void} = {
uri: undefined,
};
render(): React.Node {
return (
<RNTesterThemeContext.Consumer>
{theme => (
<View style={style.container}>
<Text
onPress={this.takeScreenshot}
style={[style.button, {color: theme.LabelColor}]}>
Click to take a screenshot
</Text>
<Image
style={[style.image, {backgroundColor: theme.LabelColor}]}
source={{uri: this.state.uri}}
/>
</View>
)}
</RNTesterThemeContext.Consumer>
);
}
takeScreenshot = () => {
ScreenshotManager.takeScreenshot('window', {format: 'jpeg', quality: 0.8}) // See UIManager.js for options
.then(uri => this.setState({uri}))
.catch(error => Alert.alert(error));
};
}
const style = StyleSheet.create({
container: {
flex: 1,
},
button: {
marginBottom: 10,
fontWeight: '500',
},
image: {
flex: 1,
resizeMode: 'contain',
},
});
exports.title = 'Snapshot / Screenshot';
exports.category = 'Basic';
exports.description = 'API to capture images from the screen.';
exports.examples = [
{
title: 'Take screenshot',
render(): React.MixedElement {
return <ScreenshotExample />;
},
},
];