react-native/RNTester/js/ProgressViewIOSExample.js
Guilherme Varandas f1d6e225c5 Removing TimerMixin on ProgressViewIOSExample (#21500)
Summary:
Related to #21485.
Removed TimerMixin from the `RNTester/js/ProgressViewIOSExample.js` screen since it is currently not used.

- [x] `npm run prettier`
- [x] `npm run flow-check-ios`
- [x] `npm run flow-check-android`
- [x] runtime tests using `ProgressViewIOSExample` on Android and iOS

**RNTester steps**

- [x] Run RNTester.
- [x] Navigate to `ProgressViewIOSExample` and check if the animations are executed correctly and without lag.

[GENERAL] [ENHANCEMENT] [RNTester/js/ProgressViewIOSExample.js] - remove TimerMixin dependency
Pull Request resolved: https://github.com/facebook/react-native/pull/21500

Reviewed By: TheSavior

Differential Revision: D10218366

Pulled By: RSNara

fbshipit-source-id: b44a0bbb50f6b0e85f406904131804eace941335
2018-10-05 11:18:21 -07:00

103 lines
2.3 KiB
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
*/
'use strict';
var React = require('react');
var createReactClass = require('create-react-class');
var ReactNative = require('react-native');
var {ProgressViewIOS, StyleSheet, View} = ReactNative;
var ProgressViewExample = createReactClass({
displayName: 'ProgressViewExample',
_rafId: (null: ?AnimationFrameID),
getInitialState() {
return {
progress: 0,
};
},
componentDidMount() {
this.updateProgress();
},
componentWillUnmount() {
if (this._rafId != null) {
cancelAnimationFrame(this._rafId);
}
},
updateProgress() {
var progress = this.state.progress + 0.01;
this.setState({progress});
this._rafId = requestAnimationFrame(() => this.updateProgress());
},
getProgress(offset) {
var progress = this.state.progress + offset;
return Math.sin(progress % Math.PI) % 1;
},
render() {
return (
<View style={styles.container}>
<ProgressViewIOS
style={styles.progressView}
progress={this.getProgress(0)}
/>
<ProgressViewIOS
style={styles.progressView}
progressTintColor="purple"
progress={this.getProgress(0.2)}
/>
<ProgressViewIOS
style={styles.progressView}
progressTintColor="red"
progress={this.getProgress(0.4)}
/>
<ProgressViewIOS
style={styles.progressView}
progressTintColor="orange"
progress={this.getProgress(0.6)}
/>
<ProgressViewIOS
style={styles.progressView}
progressTintColor="yellow"
progress={this.getProgress(0.8)}
/>
</View>
);
},
});
exports.displayName = (undefined: ?string);
exports.framework = 'React';
exports.title = 'ProgressViewIOS';
exports.description = 'ProgressViewIOS';
exports.examples = [
{
title: 'ProgressViewIOS',
render() {
return <ProgressViewExample />;
},
},
];
var styles = StyleSheet.create({
container: {
marginTop: -20,
backgroundColor: 'transparent',
},
progressView: {
marginTop: 20,
},
});