@samitouri / QOS-React / commits / 7ec46e0fb0

[RT] Minor clean up (#11122)

* Rename rootNodeID -> tag * Process RT props before forwarding them along This is needed because the children prop can't be serialized. Also, some minor placeholder for events.

Sebastian Markbåge committed Oct 5, 2017 at 18:32 UTC 7ec46e0fb0c8a865f0a3c87d563ceb46b05310ef
2 files changed +24 -6
src/renderers/native-rt/ReactNativeRTEventEmitter.js
+2 -4
@@ -21,14 +21,12 @@ var ReactNativeRTEventEmitter = {
21 * @param {object} nativeEventParam Object passed from native.
22 */
23 receiveEvent: function(
24 - rootNodeID: number,
24 + tag: number,
25 topLevelType: string,
26 nativeEventParam: Object,
27 ) {
28 var nativeEvent = nativeEventParam;
29 - var props = ReactNativeRTComponentTree.getFiberCurrentPropsFromTag(
30 - rootNodeID,
31 - );
29 + var props = ReactNativeRTComponentTree.getFiberCurrentPropsFromTag(tag);
30 if (props == null) {
31 return;
32 }
src/renderers/native-rt/ReactNativeRTFiberRenderer.js
+22 -2
@@ -25,6 +25,26 @@ export type TextInstance = number;
25
26 const {precacheFiberNode, updateFiberProps} = ReactNativeRTComponentTree;
27
28 +function processProps(instance: number, props: Props): Object {
29 + const propsPayload = {};
30 + for (var key in props) {
31 + if (key === 'children') {
32 + // Skip special case.
33 + continue;
34 + }
35 + var value = props[key];
36 + if (typeof value === 'function') {
37 + value = {
38 + style: 'rt-event',
39 + event: key,
40 + tag: instance,
41 + };
42 + }
43 + propsPayload[key] = value;
44 + }
45 + return propsPayload;
46 +}
47 +
48 const NativeRTRenderer = ReactFiberReconciler({
49 appendChild(parentInstance: Instance, child: Instance | TextInstance): void {
50 RTManager.appendChild(parentInstance, child);
@@ -70,7 +90,7 @@ const NativeRTRenderer = ReactFiberReconciler({
90 internalInstanceHandle: Object,
91 ): void {
92 updateFiberProps(instance, newProps);
73 - RTManager.updateNode(instance, newProps);
93 + RTManager.updateNode(instance, processProps(instance, newProps));
94 },
95
96 createInstance(
@@ -81,9 +101,9 @@ const NativeRTRenderer = ReactFiberReconciler({
101 internalInstanceHandle: Object,
102 ): Instance {
103 const tag = ReactNativeRTTagHandles.allocateTag();
84 - RTManager.createNode(tag, type, props);
104 precacheFiberNode(internalInstanceHandle, tag);
105 updateFiberProps(tag, props);
106 + RTManager.createNode(tag, type, processProps(tag, props));
107 return tag;
108 },
109