Skip to content

Commit d61e63f

Browse files
Correct typing/nullability for react_dom.dart's findDomNode and render
1 parent 98c8569 commit d61e63f

File tree

5 files changed

+14
-14
lines changed

5 files changed

+14
-14
lines changed

lib/react_client/react_interop.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,8 @@ ReactComponentFactoryProxy memo2(ReactComponentFactoryProxy factory,
274274
}
275275

276276
abstract class ReactDom {
277-
static Element findDOMNode(object) => ReactDOM.findDOMNode(object);
278-
static ReactComponent render(ReactElement component, Element element) => ReactDOM.render(component, element);
277+
static Element? findDOMNode(dynamic object) => ReactDOM.findDOMNode(object);
278+
static ReactComponent render(dynamic component, Element element) => ReactDOM.render(component, element);
279279
static bool unmountComponentAtNode(Element element) => ReactDOM.unmountComponentAtNode(element);
280280

281281
/// Returns a a portal that renders [children] into a [container].

lib/src/react_client/dart2_interop_workaround_bindings.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import 'package:react/react_client/react_interop.dart';
88

99
@JS()
1010
abstract class ReactDOM {
11-
external static Element findDOMNode(object);
12-
external static ReactComponent render(ReactElement component, Element element);
11+
external static Element? findDOMNode(dynamic object);
12+
external static ReactComponent render(dynamic component, Element element);
1313
external static bool unmountComponentAtNode(Element element);
1414
external static ReactPortal createPortal(dynamic children, Element container);
1515
}

test/lifecycle_test.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ main() {
480480
final mountNode = DivElement();
481481
final renderedInstance = react_dom.render(components2.SetStateTest({}), mountNode);
482482
final component = getDartComponent<LifecycleTestHelper>(renderedInstance);
483-
final renderedNode = findDomNode(renderedInstance);
483+
final renderedNode = findDomNode(renderedInstance)!;
484484
LifecycleTestHelper.staticLifecycleCalls.clear();
485485
component.setState({'shouldThrow': true});
486486

@@ -1518,7 +1518,7 @@ void sharedLifecycleTests<T extends react.Component>({
15181518
test('when shouldComponentUpdate returns false', () {
15191519
final mountNode = DivElement();
15201520
final renderedInstance = react_dom.render(SetStateTest({'shouldUpdate': false}), mountNode);
1521-
final renderedNode = findDomNode(renderedInstance);
1521+
final renderedNode = findDomNode(renderedInstance)!;
15221522
final component = getDartComponent<LifecycleTestHelper>(renderedInstance);
15231523

15241524
react_test_utils.Simulate.click(renderedNode.children.first);
@@ -1541,7 +1541,7 @@ void sharedLifecycleTests<T extends react.Component>({
15411541
test('when shouldComponentUpdate returns true', () {
15421542
final mountNode = DivElement();
15431543
final renderedInstance = react_dom.render(SetStateTest({}), mountNode);
1544-
final renderedNode = findDomNode(renderedInstance);
1544+
final renderedNode = findDomNode(renderedInstance)!;
15451545
final component = getDartComponent<LifecycleTestHelper>(renderedInstance);
15461546

15471547
react_test_utils.Simulate.click(renderedNode.children.first);

test/react_test_utils_test.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void testUtils({
6666

6767
setUp(() {
6868
component = renderIntoDocument(eventComponent({})) as Object;
69-
domNode = findDomNode(component);
69+
domNode = findDomNode(component)!;
7070
expect(domNode.text, equals(''));
7171
});
7272

@@ -350,12 +350,12 @@ void testUtils({
350350

351351
expect(divElements.length, equals(3));
352352
// First div should be the parent div created by renderIntoDocument()
353-
expect(findDomNode(divElements[0]).text, equals('A headerFirst divSecond div'));
354-
expect(findDomNode(divElements[1]).text, equals('First div'));
355-
expect(findDomNode(divElements[2]).text, equals('Second div'));
353+
expect(findDomNode(divElements[0])!.text, equals('A headerFirst divSecond div'));
354+
expect(findDomNode(divElements[1])!.text, equals('First div'));
355+
expect(findDomNode(divElements[2])!.text, equals('Second div'));
356356
expect(h1Elements.length, equals(1));
357-
expect(findDomNode(h1Elements[0]).text, equals('A header'));
357+
expect(findDomNode(h1Elements[0])!.text, equals('A header'));
358358
expect(spanElements.length, equals(1));
359-
expect(findDomNode(spanElements[0]).text, equals(''));
359+
expect(findDomNode(spanElements[0])!.text, equals(''));
360360
});
361361
}

test/util.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ ReactComponent render(ReactElement reactElement) {
4949
}
5050

5151
// Same as the public API but with tightened types to help fix implicit casts
52-
Element findDomNode(dynamic component) => react_dom.findDOMNode(component) as Element;
52+
Element? findDomNode(dynamic component) => react_dom.findDOMNode(component) as Element?;
5353

5454
/// Returns a new [Map.unmodifiable] with all argument maps merged in.
5555
Map unmodifiableMap([Map? map1, Map? map2, Map? map3, Map? map4]) {

0 commit comments

Comments
 (0)