mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
RN: Add RootTag Type to TurboModule
Summary: Adds `RootTag` as a valid type for arguments and return types in TurboModules (on both Android and iOS). This will enable us to change `RootTag` into an opaque type. There are two compelling reasons to do this: - JavaScript will no longer be able to safely depend on `RootTag` being a number (which means we can change this in the future). - Call sites using `unstable_RootTagContext` will can get a `RootTag`, but call sites using the legacy `context.rootTag` will not. This means the opaque type will give us a strategy for migrating away from legacy context and eventually making `unstable_RootTagContext` the only way to access `RootTag`. Changelog: [Internal] (Note: this ignores all push blocking failures!) Reviewed By: RSNara Differential Revision: D21127170 fbshipit-source-id: baec9d7ad17b2f8c4527f1a84f604fc0d28b97eb
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a850d116dc
commit
5242ad931b
@@ -11,6 +11,7 @@
|
||||
'use strict';
|
||||
|
||||
import NativeSampleTurboModule from '../../../../Libraries/TurboModule/samples/NativeSampleTurboModule';
|
||||
import type {RootTag} from '../../../../Libraries/ReactNative/RootTag';
|
||||
import {
|
||||
StyleSheet,
|
||||
Text,
|
||||
@@ -18,6 +19,7 @@ import {
|
||||
FlatList,
|
||||
Platform,
|
||||
TouchableOpacity,
|
||||
unstable_RootTagContext,
|
||||
} from 'react-native';
|
||||
import * as React from 'react';
|
||||
|
||||
@@ -33,6 +35,8 @@ type State = {|
|
||||
|};
|
||||
|
||||
class SampleTurboModuleExample extends React.Component<{||}, State> {
|
||||
static contextType: React$Context<RootTag> = unstable_RootTagContext;
|
||||
|
||||
state: State = {
|
||||
testResults: {},
|
||||
};
|
||||
@@ -64,6 +68,7 @@ class SampleTurboModuleExample extends React.Component<{||}, State> {
|
||||
]),
|
||||
getObject: () =>
|
||||
NativeSampleTurboModule.getObject({a: 1, b: 'foo', c: null}),
|
||||
getRootTag: () => NativeSampleTurboModule.getRootTag(this.context),
|
||||
getValue: () =>
|
||||
NativeSampleTurboModule.getValue(5, 'test', {a: 1, b: 'foo'}),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user