This repository was archived by the owner on Feb 28, 2019. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +66
-0
lines changed
src/main/java/react4j/widget Expand file tree Collapse file tree 2 files changed +66
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2
+ <module >
3
+ <inherits name =" react4j.dom.ReactDOM" />
4
+ <inherits name =" com.google.gwt.user.UI" />
5
+
6
+ <source path =' ' />
7
+ </module >
Original file line number Diff line number Diff line change
1
+ package react4j .widget ;
2
+
3
+ import com .google .gwt .dom .client .Document ;
4
+ import com .google .gwt .dom .client .Element ;
5
+ import com .google .gwt .user .client .ui .Widget ;
6
+ import java .util .Objects ;
7
+ import javax .annotation .Nonnull ;
8
+ import jsinterop .base .Js ;
9
+ import react4j .core .ReactNode ;
10
+ import react4j .dom .ReactDOM ;
11
+
12
+ /**
13
+ * A GWT widget that renders a React4j element.
14
+ */
15
+ public class ReactWidget
16
+ extends Widget
17
+ {
18
+ /**
19
+ * The GWT Element representation.
20
+ */
21
+ private final Element _element ;
22
+ /**
23
+ * The react widget to render.
24
+ */
25
+ private final ReactNode _reactElement ;
26
+
27
+ /**
28
+ * Create the widget.
29
+ *
30
+ * @param reactElement the react element to render.
31
+ */
32
+ public ReactWidget ( @ Nonnull final ReactNode reactElement )
33
+ {
34
+ _element = Document .get ().createDivElement ();
35
+ _reactElement = Objects .requireNonNull ( reactElement );
36
+ setElement ( _element );
37
+ }
38
+
39
+ /**
40
+ * {@inheritDoc}
41
+ */
42
+ @ Override
43
+ public void onAttach ()
44
+ {
45
+ super .onAttach ();
46
+ ReactDOM .render ( _reactElement , Js .uncheckedCast ( _element ) );
47
+
48
+ }
49
+
50
+ /**
51
+ * {@inheritDoc}
52
+ */
53
+ @ Override
54
+ public void onDetach ()
55
+ {
56
+ ReactDOM .unmountComponentAtNode ( Js .uncheckedCast ( _element ) );
57
+ super .onDetach ();
58
+ }
59
+ }
You can’t perform that action at this time.
0 commit comments