Files
react-native/ReactCommon/react/renderer/core/Props.cpp
T
Andrei Shikov 1953f6f02e Exclude raw props from view shadow nodes
Summary:
With the `MapBuffer`-based props calculated from C++ props, there's no need to keep `rawProps` around for Android views.

This change makes sure that the `rawProps` field is only initialized under the feature flag that is responsible for enabling `MapBuffer` for prop diffing, potentially decreasing memory footprint and speeding up node initialization as JS props don't have to be converted to `folly::dynamic` anymore.

For layout animations, props rely on C++ values, so there's no need to update `rawProps` values either.

Changelog: [Internal][Android] - Do not init `rawProps` when mapbuffer serialization is used for ViewProps.

Reviewed By: mdvacca

Differential Revision: D33793044

fbshipit-source-id: 35873b10d3ca8b152b25344ef2c27aff9641846f
2022-02-22 17:23:05 -08:00

38 lines
877 B
C++

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "Props.h"
#include <folly/dynamic.h>
#include <react/renderer/core/propsConversions.h>
namespace facebook {
namespace react {
Props::Props(
const PropsParserContext &context,
const Props &sourceProps,
const RawProps &rawProps,
const bool shouldSetRawProps)
: nativeId(convertRawProp(
context,
rawProps,
"nativeID",
sourceProps.nativeId,
{})),
revision(sourceProps.revision + 1)
#ifdef ANDROID
,
rawProps(
shouldSetRawProps ? (folly::dynamic)rawProps
: /* null */ folly::dynamic())
#endif
{};
} // namespace react
} // namespace facebook