Files
react-native/ReactCommon/react/renderer/core/DynamicPropsUtilities.cpp
T
Samuel Susla f303266d69 Correctly handle null values in dynamic props in prop forwarding
Summary:
Changelog: [internal]

shergin found that folly's merge_patch implementation doesn't propagate `null` correctly (details in D26435620 (https://github.com/facebook/react-native/commit/1e9f63fe277c42d812ef007ced7eff1688602b62)). This is a requirement and needs to be adjusted in props forwarding on Android.

As far as we know this isn't causing any bugs but it is an error that should be fixed.

Reviewed By: shergin

Differential Revision: D26545821

fbshipit-source-id: 9edd24aecfcde17f5d9c1197f65db0e0f3f9e364
2021-02-22 05:53:24 -08:00

36 lines
821 B
C++

/*
* 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.
*/
#include "DynamicPropsUtilities.h"
namespace facebook {
namespace react {
folly::dynamic mergeDynamicProps(
folly::dynamic const &source,
folly::dynamic const &patch) {
auto result = source;
if (!result.isObject()) {
result = folly::dynamic::object();
}
if (!patch.isObject()) {
return result;
}
// Note, here we have to preserve sub-prop objects with `null` value as
// an indication for the legacy mounting layer that it needs to clean them up.
for (auto const &pair : patch.items()) {
result[pair.first] = pair.second;
}
return result;
}
} // namespace react
} // namespace facebook