@@ -25,17 +25,18 @@ const initialState = {
2525type IResolveState = Readonly < typeof initialState > ;
2626
2727/**
28- * A component to render based on a promise
28+ * Returns content based on specified promise.
2929 *
3030 * @example
31+ *
3132 * <Resolve
32- * promise = {aPromise}
33- * resolved = {
34- * value => <p>{`Resolved value is ${value}`}</p>
35- * } />
33+ * promise={aPromise}
34+ * resolved={value => (
35+ * <p>{`Resolved value ${value}`}</p>
36+ * )}
37+ * />
3638 */
3739class Resolve extends React . Component < IResolveProps , IResolveState > {
38- // PropTypes
3940 public static propTypes = {
4041 pending : PropTypes . oneOfType ( [ PropTypes . func , PropTypes . node ] ) ,
4142 promise : isPromise ,
@@ -51,24 +52,53 @@ class Resolve extends React.Component<IResolveProps, IResolveState> {
5152
5253 public componentDidMount ( ) {
5354 // Start handling the promise, must happen after mount as setState is called when promise is handled
54- this . _handlePromise ( this . props . promise ) ;
55+ this . handlePromise ( this . props . promise ) ;
5556 }
5657
5758 public componentDidUpdate ( prevProps ) {
5859 if ( this . props . promise !== prevProps . promise ) {
5960 this . setState ( {
6061 status : statusTypes . none ,
6162 } ) ;
62- this . _handlePromise ( this . props . promise ) ;
63+ this . handlePromise ( this . props . promise ) ;
6364 }
6465 }
6566
6667 public componentWillUnmount ( ) {
6768 this . unmounted = true ;
6869 }
6970
71+ public render ( ) {
72+ const { pending, resolved, rejected } = this . props ;
73+ const { status, value } = this . state ;
74+
75+ switch ( status ) {
76+ case statusTypes . none :
77+ break ;
78+ case statusTypes . pending :
79+ if ( pending ) {
80+ return pending ;
81+ }
82+ break ;
83+ case statusTypes . resolved :
84+ if ( resolved ) {
85+ return resolved ( value ) ;
86+ }
87+ break ;
88+ case statusTypes . rejected :
89+ if ( rejected ) {
90+ return rejected ( value ) ;
91+ }
92+ break ;
93+ default :
94+ break ;
95+ }
96+
97+ return null ;
98+ }
99+
70100 // Promise resolver function
71- public _handlePromise ( promise ) {
101+ private handlePromise ( promise ) {
72102 // Store the current promise to fast exit if promise is change during handling
73103 const currentPromise = promise ;
74104 this . setState ( {
@@ -100,35 +130,6 @@ class Resolve extends React.Component<IResolveProps, IResolveState> {
100130 }
101131 } ) ;
102132 }
103-
104- public render ( ) {
105- const { pending, resolved, rejected } = this . props ;
106- const { status, value } = this . state ;
107-
108- switch ( status ) {
109- case statusTypes . none :
110- break ;
111- case statusTypes . pending :
112- if ( pending ) {
113- return pending ;
114- }
115- break ;
116- case statusTypes . resolved :
117- if ( resolved ) {
118- return resolved ( value ) ;
119- }
120- break ;
121- case statusTypes . rejected :
122- if ( rejected ) {
123- return rejected ( value ) ;
124- }
125- break ;
126- default :
127- break ;
128- }
129-
130- return null ;
131- }
132133}
133134
134135export default Resolve ;
0 commit comments