mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-01-12 22:50:10 +08:00
Summary: We need to move animated native module calls to synchronous so we can properly thread them in with mounting instructions in Fabric. Some of them take callbacks so we need to add support for that when switching to synchronous. A side benefit is that we can unify codepaths a little more with async callbacks. Reviewed By: shergin Differential Revision: D14790898 fbshipit-source-id: dc222b9e74375e046e8a9b1b19d72f652dc6722c
54 lines
1.4 KiB
JavaScript
54 lines
1.4 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 strict-local
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
const React = require('react');
|
|
const ReactNative = require('react-native');
|
|
const {View} = ReactNative;
|
|
|
|
const {TestModule, RNTesterTestModule} = ReactNative.NativeModules;
|
|
|
|
class SyncMethodTest extends React.Component<{}> {
|
|
componentDidMount() {
|
|
if (
|
|
RNTesterTestModule.echoString('test string value') !== 'test string value'
|
|
) {
|
|
throw new Error('Something wrong with echoString sync method');
|
|
}
|
|
if (RNTesterTestModule.methodThatReturnsNil() != null) {
|
|
throw new Error('Something wrong with methodThatReturnsNil sync method');
|
|
}
|
|
let response;
|
|
RNTesterTestModule.methodThatCallsCallbackWithString('test', echo => {
|
|
response = echo;
|
|
});
|
|
requestAnimationFrame(() => {
|
|
if (response === 'test') {
|
|
TestModule.markTestCompleted();
|
|
} else {
|
|
throw new Error(
|
|
'Something wrong with methodThatCallsCallbackWithString sync method, ' +
|
|
'got response ' +
|
|
JSON.stringify(response),
|
|
);
|
|
}
|
|
});
|
|
}
|
|
|
|
render(): React.Node {
|
|
return <View />;
|
|
}
|
|
}
|
|
|
|
SyncMethodTest.displayName = 'SyncMethodTest';
|
|
|
|
module.exports = SyncMethodTest;
|