Skip to content

Commit 2cda4f7

Browse files
sammy-SCfacebook-github-bot
authored andcommitted
Simplify createInitialState interface (#37069)
Summary: Pull Request resolved: #37069 changelog: [internal] To create initial C++ state, nothing beside props is needed from `ShadowNodeFragment` and this diff removes it. It makes creation of state easier as we will no longer need to check if props are nullptr. Reviewed By: mdvacca Differential Revision: D45183692 fbshipit-source-id: 81ab8eb3c57f6ff64aaed7c5b395555dce6b60b2
1 parent a718a88 commit 2cda4f7

File tree

10 files changed

+13
-21
lines changed

10 files changed

+13
-21
lines changed

packages/react-native/ReactCommon/react/renderer/componentregistry/ComponentDescriptorRegistry.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,7 @@ ShadowNode::Shared ComponentDescriptorRegistry::createNode(
136136
PropsParserContext{surfaceId, *contextContainer_.get()},
137137
nullptr,
138138
RawProps(propsDynamic));
139-
auto const state =
140-
componentDescriptor.createInitialState(ShadowNodeFragment{props}, family);
139+
auto const state = componentDescriptor.createInitialState(props, family);
141140

142141
return componentDescriptor.createShadowNode(
143142
{

packages/react-native/ReactCommon/react/renderer/components/image/ImageShadowNode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class ImageShadowNode final : public ConcreteViewShadowNode<
4141
void setImageManager(const SharedImageManager &imageManager);
4242

4343
static ImageState initialStateData(
44-
ShadowNodeFragment const &fragment,
44+
Props::Shared const &props,
4545
ShadowNodeFamilyFragment const &familyFragment,
4646
ComponentDescriptor const &componentDescriptor) {
4747
auto imageSource = ImageSource{ImageSource::Type::Invalid};

packages/react-native/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,10 @@ void ScrollViewShadowNode::updateScrollContentOffsetIfNeeded() {
4949
}
5050

5151
ScrollViewState ScrollViewShadowNode::initialStateData(
52-
const ShadowNodeFragment &fragment,
52+
Props::Shared const &props,
5353
const ShadowNodeFamilyFragment & /*familyFragment*/,
5454
const ComponentDescriptor & /*componentDescriptor*/) {
55-
if (fragment.props != ShadowNodeFragment::propsPlaceholder()) {
56-
auto const &scrollViewProps =
57-
static_cast<ScrollViewProps const &>(*fragment.props);
58-
return {scrollViewProps.contentOffset, {}, 0};
59-
} else {
60-
return ScrollViewState{};
61-
}
55+
return {static_cast<ScrollViewProps const &>(*props).contentOffset, {}, 0};
6256
}
6357

6458
#pragma mark - LayoutableShadowNode

packages/react-native/ReactCommon/react/renderer/components/scrollview/ScrollViewShadowNode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class ScrollViewShadowNode final : public ConcreteViewShadowNode<
2929
using ConcreteViewShadowNode::ConcreteViewShadowNode;
3030

3131
static ScrollViewState initialStateData(
32-
ShadowNodeFragment const &fragment,
32+
Props::Shared const &props,
3333
ShadowNodeFamilyFragment const &familyFragment,
3434
ComponentDescriptor const &componentDescriptor);
3535

packages/react-native/ReactCommon/react/renderer/components/textinput/androidtextinput/react/renderer/components/androidtextinput/AndroidTextInputComponentDescriptor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class AndroidTextInputComponentDescriptor final
3434
}
3535

3636
virtual State::Shared createInitialState(
37-
ShadowNodeFragment const &fragment,
37+
Props::Shared const &props,
3838
ShadowNodeFamily::Shared const &family) const override {
3939
int surfaceId = family->getSurfaceId();
4040

packages/react-native/ReactCommon/react/renderer/core/ComponentDescriptor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class ComponentDescriptor {
121121
* State's data which can be constructed based on initial Props.
122122
*/
123123
virtual State::Shared createInitialState(
124-
ShadowNodeFragment const &fragment,
124+
Props::Shared const &props,
125125
ShadowNodeFamily::Shared const &family) const = 0;
126126

127127
/*

packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class ConcreteComponentDescriptor : public ComponentDescriptor {
151151
};
152152

153153
virtual State::Shared createInitialState(
154-
ShadowNodeFragment const &fragment,
154+
Props::Shared const &props,
155155
ShadowNodeFamily::Shared const &family) const override {
156156
if (std::is_same<ConcreteStateData, StateData>::value) {
157157
// Default case: Returning `null` for nodes that don't use `State`.
@@ -161,7 +161,7 @@ class ConcreteComponentDescriptor : public ComponentDescriptor {
161161
return std::make_shared<ConcreteState>(
162162
std::make_shared<ConcreteStateData const>(
163163
ConcreteShadowNode::initialStateData(
164-
fragment, ShadowNodeFamilyFragment::build(*family), *this)),
164+
props, ShadowNodeFamilyFragment::build(*family), *this)),
165165
family);
166166
}
167167

packages/react-native/ReactCommon/react/renderer/core/ConcreteShadowNode.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class ConcreteShadowNode : public BaseShadowNodeT {
8686
}
8787

8888
static ConcreteStateData initialStateData(
89-
ShadowNodeFragment const &fragment,
89+
Props::Shared const & /*props*/,
9090
ShadowNodeFamilyFragment const &familyFragment,
9191
ComponentDescriptor const &componentDescriptor) {
9292
return {};

packages/react-native/ReactCommon/react/renderer/element/ComponentBuilder.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ ShadowNode::Unshared ComponentBuilder::build(
3131
elementFragment.tag, elementFragment.surfaceId, nullptr},
3232
nullptr);
3333

34-
auto initialState = componentDescriptor.createInitialState(
35-
ShadowNodeFragment{elementFragment.props}, family);
34+
auto initialState =
35+
componentDescriptor.createInitialState(elementFragment.props, family);
3636

3737
auto constShadowNode = componentDescriptor.createShadowNode(
3838
ShadowNodeFragment{

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ ShadowNode::Shared UIManager::createNode(
8080
componentDescriptor.createFamily(fragment, std::move(eventTarget));
8181
auto const props =
8282
componentDescriptor.cloneProps(propsParserContext, nullptr, rawProps);
83-
auto const state =
84-
componentDescriptor.createInitialState(ShadowNodeFragment{props}, family);
83+
auto const state = componentDescriptor.createInitialState(props, family);
8584

8685
auto shadowNode = componentDescriptor.createShadowNode(
8786
ShadowNodeFragment{

0 commit comments

Comments
 (0)