2017-01-25 13 views
6

के साथ एक उच्च आदेश घटक मैं निम्नलिखित अस्थायी है टाइप करने के लिए कैसे:प्रवाह

export default (keys: Array<string>) => 
    (WrappedComponent: React.Component<*, *, *>) => (props: Object): React.Element<*> => { 
    if (hasNotYetLoadedProps(keys, props)) { 
     return (
     <div 
      style={{ 
      textAlign: 'center', 
      display: 'flex', 
      justifyContent: 'center', 
      alignItems: 'center', 
      height: '100%', 
      }} 
     > 
      <div>Loading</div> 
     </div> 
    ) 
    } 
    return <WrappedComponent {... props} /> 
    } 

है कि या तो मूल घटक या एक लोडिंग सूचक प्रस्तुत करना। वास्तविक प्रवाह प्रकार घोषणा के साथ मुझे यह त्रुटि मिलती है:

React element `WrappedComponent`. Expected React component instead of React$Component 

अंतिम पंक्ति में। आने वाले घटक का सही प्रकार क्या होगा?

उत्तर

5

प्रकार, के लिए ReactClass<any>

export default (keys: Array<string>) => 
    (WrappedComponent: ReactClass<any>) => (props: Object): React.Element<*> => { 
    if (hasNotYetLoadedProps(keys, props)) { 
     return (
     <div 
      style={{ 
      textAlign: 'center', 
      display: 'flex', 
      justifyContent: 'center', 
      alignItems: 'center', 
      height: '100%', 
      }} 
     > 
      <div>Loading</div> 
     </div> 
    ) 
    } 
    return <WrappedComponent {... props} /> 
    } 
+1

हाय की जरूरत है आप एक छोटे से अपने जवाब का विकास कर सकता है? रिएक्ट $ घटक, ReactClass, $ Eleact पर प्रतिक्रिया के बीच क्या अंतर है? नोट: यहां एक एचओसी के लिए टाइप करने का एक उदाहरण दिया गया है जो कक्षा लौटाता है, और ऐसा लगता है कि आपके उत्तर 'निर्यात कॉस्ट कुछ एचओसी = (कुछ कॉम्पोनेंट: रीक्टक्लास <*>): कक्षा <$ घटक प्रति प्रतिक्रिया <*, *, *>> => ( कक्षा React.PureComponent {... ' –

+0

स्पष्ट रूप से, ReactClass प्रकार की जांच को फेंकता है: https://github.com/facebook/flow/issues/2159 –

संबंधित मुद्दे