mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
feat: add RawPropsParser as optional parameter to Concrete-/ComponentDescriptor (#48232)
Summary: In this PR we introduced a new mechanism for `RawPropsParser` to construct its RawValues directly from `jsi::Value` instead of converting it to `folly::dynamic` first: - https://github.com/facebook/react-native/pull/48047/ In this PR we added a parameter to `RawPropsParser` to opt-into using the above described mechanism: - https://github.com/facebook/react-native/pull/48231 Whats missing is that `RawPropsParser` was default constructed in `ComponentProvider` and there is no way to pass a custom instance (where you'd for example set the above described parameter). This PR adds support for that. ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [INTERNAL] [ADDED] - Add `RawPropsParser` as optional parameter to Concrete-/ComponentDescriptor Pull Request resolved: https://github.com/facebook/react-native/pull/48232 Test Plan: Internal change, just make sure all CI tests are passing. Reviewed By: cipolleschi Differential Revision: D67135357 Pulled By: javache fbshipit-source-id: 45f384d42314976c16cae10d5ea0419d13fd0889
This commit is contained in:
committed by
Facebook GitHub Bot
parent
f4a17fbb93
commit
9dce26215b
@@ -11,10 +11,12 @@
|
||||
namespace facebook::react {
|
||||
|
||||
ComponentDescriptor::ComponentDescriptor(
|
||||
const ComponentDescriptorParameters& parameters)
|
||||
const ComponentDescriptorParameters& parameters,
|
||||
RawPropsParser&& rawPropsParser)
|
||||
: eventDispatcher_(parameters.eventDispatcher),
|
||||
contextContainer_(parameters.contextContainer),
|
||||
flavor_(parameters.flavor) {}
|
||||
flavor_(parameters.flavor),
|
||||
rawPropsParser_(std::move(rawPropsParser)) {}
|
||||
|
||||
const std::shared_ptr<const ContextContainer>&
|
||||
ComponentDescriptor::getContextContainer() const {
|
||||
|
||||
@@ -46,7 +46,9 @@ class ComponentDescriptor {
|
||||
*/
|
||||
using Flavor = std::shared_ptr<const void>;
|
||||
|
||||
ComponentDescriptor(const ComponentDescriptorParameters& parameters);
|
||||
explicit ComponentDescriptor(
|
||||
const ComponentDescriptorParameters& parameters,
|
||||
RawPropsParser&& rawPropsParser = {});
|
||||
|
||||
virtual ~ComponentDescriptor() = default;
|
||||
|
||||
@@ -133,8 +135,8 @@ class ComponentDescriptor {
|
||||
|
||||
EventDispatcher::Weak eventDispatcher_;
|
||||
std::shared_ptr<const ContextContainer> contextContainer_;
|
||||
RawPropsParser rawPropsParser_{};
|
||||
Flavor flavor_;
|
||||
RawPropsParser rawPropsParser_;
|
||||
|
||||
/*
|
||||
* Called immediately after `ShadowNode` is created, cloned or state is
|
||||
|
||||
@@ -46,8 +46,10 @@ class ConcreteComponentDescriptor : public ComponentDescriptor {
|
||||
using ConcreteState = typename ShadowNodeT::ConcreteState;
|
||||
using ConcreteStateData = typename ShadowNodeT::ConcreteState::Data;
|
||||
|
||||
ConcreteComponentDescriptor(const ComponentDescriptorParameters& parameters)
|
||||
: ComponentDescriptor(parameters) {
|
||||
explicit ConcreteComponentDescriptor(
|
||||
const ComponentDescriptorParameters& parameters,
|
||||
RawPropsParser&& rawPropsParser = {})
|
||||
: ComponentDescriptor(parameters, std::move(rawPropsParser)) {
|
||||
rawPropsParser_.prepare<ConcreteProps>();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user