Fix clone of props for legacy interop component

Summary:
Changelog: [internal]

Cloning of `LegacyViewManagerInteropViewProps` causes loss of `sourceProps.otherProps` if the cloning happens before shadow node is mounted. This was happening in WebView and callback `onLoadEnd` was dropped because of this.

Reviewed By: JoshuaGross

Differential Revision: D25474581

fbshipit-source-id: 74d7c5cd32b7318bb99306c82bc8b5e5eab63db2
This commit is contained in:
Samuel Susla 2020-12-11 14:05:19 -08:00 коммит произвёл Facebook GitHub Bot
Родитель 2a175b14e6
Коммит fe887173ee
1 изменённых файлов: 11 добавлений и 1 удалений

Просмотреть файл

@ -10,10 +10,20 @@
namespace facebook {
namespace react {
static folly::dynamic recursiveMerge(
folly::dynamic const &lhs,
folly::dynamic const &rhs) {
auto copy = lhs;
copy.merge_patch(rhs);
return copy;
}
LegacyViewManagerInteropViewProps::LegacyViewManagerInteropViewProps(
const LegacyViewManagerInteropViewProps &sourceProps,
const RawProps &rawProps)
: ViewProps(sourceProps, rawProps), otherProps((folly::dynamic)rawProps) {}
: ViewProps(sourceProps, rawProps),
otherProps(
recursiveMerge(sourceProps.otherProps, (folly::dynamic)rawProps)) {}
} // namespace react
} // namespace facebook