react-native/Libraries/RCTTest/SnapshotViewIOS.ios.js
Nick Lockwood 9d0242fdc3 Replace direct access of NativeModules.UIManager with require('UIManager')
Summary:
public
Due to the cross-platform polyfills we have added (and will add in future) to `UIManager.js`, accessing UIManager directly via NativeModules instead of importing the wrapper is discouraged.

This diff fixes a few places where we were doing this inside our own modules.

Note: As a general policy, we should avoid accessing modules via NativeModules anyway. Using wrapper classes allows us to provide static declarations for all the native methods and properties, which can be checked at build time by flow. If we access the modules directly, those interfaces are only known at runtime.

Reviewed By: vjeux

Differential Revision: D2881300

fb-gh-sync-id: 6737358ea8ea6d722cc1941a4b9fa0123a87fc29
2016-01-30 07:36:34 -08:00

63 lines
1.7 KiB
JavaScript

/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule SnapshotViewIOS
* @flow
*/
'use strict';
var React = require('React');
var StyleSheet = require('StyleSheet');
var { TestModule } = require('NativeModules');
var UIManager = require('UIManager');
var View = require('View');
var requireNativeComponent = require('requireNativeComponent');
var SnapshotViewIOS = React.createClass({
onDefaultAction: function(event: Object) {
TestModule.verifySnapshot(TestModule.markTestPassed);
},
render: function() {
var testIdentifier = this.props.testIdentifier || 'test';
var onSnapshotReady = this.props.onSnapshotReady || this.onDefaultAction;
return (
<RCTSnapshot
style={style.snapshot}
{...this.props}
onSnapshotReady={onSnapshotReady}
testIdentifier={testIdentifier}
/>
);
},
propTypes: {
...View.propTypes,
// A callback when the Snapshot view is ready to be compared
onSnapshotReady : React.PropTypes.func,
// A name to identify the individual instance to the SnapshotView
testIdentifier : React.PropTypes.string,
}
});
var style = StyleSheet.create({
snapshot: {
flex: 1,
},
});
// Verify that RCTSnapshot is part of the UIManager since it is only loaded
// if you have linked against RCTTest like in tests, otherwise we will have
// a warning printed out
var RCTSnapshot = UIManager.RCTSnapshot ?
requireNativeComponent('RCTSnapshot', SnapshotViewIOS) :
View;
module.exports = SnapshotViewIOS;