react-native/Examples/UIExplorer/BackAndroidExample.js
Sokovikov 67efe4c1a9 custom back button handler
Summary:sometimes it is nessesary to handle back button
specifically for component, by changing its state.
 For ex. exit from edit mode.
Closes https://github.com/facebook/react-native/pull/5062

Differential Revision: D3084590

Pulled By: ericvicenti

fb-gh-sync-id: 13a4ea1d64ce725daa5d3af0d629a0c132a3f3d5
shipit-source-id: 13a4ea1d64ce725daa5d3af0d629a0c132a3f3d5
2016-03-23 12:22:20 -07:00

67 lines
1.6 KiB
JavaScript

/**
* The examples provided by Facebook are for non-commercial testing and
* evaluation purposes only.
*
* Facebook reserves all rights not expressly granted.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
'use strict';
var React = require('react-native');
var {
Text,
View,
BackAndroid,
} = React;
var BackAndroidExample = React.createClass({
getInitialState: function() {
return {
defaultBackHandler: false
};
},
componentDidMount: function() {
BackAndroid.addEventListener('hardwareBackPress', this._handleBackButton);
},
componentWillUnmount: function() {
BackAndroid.removeEventListener('hardwareBackPress', this._handleBackButton);
},
_handleBackButton: function() {
if (!this.state.defaultBackHandler) {
this.setState({defaultBackHandler: true});
return true;
}
return false;
},
render: function() {
return (
<View>
<Text>{this.state.defaultBackHandler ? 'Ok, I\'ll quit.' : 'I won\'t quit.'}</Text>
</View>
);
},
});
exports.title = 'BackAndroid';
exports.description = 'Custom back button handler';
exports.examples = [
{
title: 'Custom back button handler',
render(): ReactElement { return <BackAndroidExample />; }
}
];