2016-06-04 15 views
5

Perché questi errori vengono visualizzati con flow. Sto usando React con le classi ES6. Esempio di codice è qui sotto:Errori con le classi Flow, ReactJS ed ES6

UPDATE

ho quasi avuto questo funzionamento basata su questo esempio: https://flowtype.org/docs/react.html#defining-components-as-react-component-subclasses

mi sono liberato della maggior parte degli errori di flusso, ma ora applicazione fallisce quando eseguirlo. Penso che questo sia ReactJS che non elimina le cose di classe Flow o Babel. Se commento il tipo di flusso defs nel mio codice qui sotto non ho ricevuto questo errore.

Io corro la mia app con watchify -t [ babelify ] app.js -o ./build/app.js

SyntaxError: /Users/carlf/Documents/dev/reactjs/FlyTweet/app/views/posts/MyNewPostForm.js: Missing class properties transform. while parsing file: /Users/carlf/Documents/dev/reactjs/FlyTweet/app/views/posts/MyNewPostForm.js

Errori di flusso:

app/views/posts/MyNewPostForm.js:51 51: var myPostTxt = ReactDOM.findDOMNode(this.Refs.content).value; ^^^^ property Refs . Property not found in 15: export default class MyNewPostForm extends React.Component { ^^^^^^^^^^^^^ MyNewPostForm

Da package.json

"dependencies": { 
    "babel-preset-react": "6.5.0", 
    "babelify": "7.3.0", 
    "react": "15.1.0", 
    "react-dom": "15.1.0", 
    "react-router": "2.4.1" 
    } 

Reagire Componente

export default class MyNewPostForm extends React.Component { 

    // START Flow type definitions. 
    MAX_POST_CHARS: number; 

    state: { 
     charsRemaining: number, 
     SendButtonDisabled: boolean 
    }; 

    handleChange:() => void; 
    onSubmit:() => void; 
    // END Flow type definitions. 

    constructor() { 
    super(); 

    this.MAX_POST_CHARS = 139; 

    this.state = { 
     charsRemaining: this.MAX_POST_CHARS, 
     SendButtonDisabled: true 
    }; 

    this.handleChange = this.handleChange.bind(this);  
    this.onSubmit = this.onSubmit.bind(this);  

    } 

    handleChange() { 
    var myPostTxt = ReactDOM.findDOMNode(this.refs.content).value; 

    // Do something here. 
    } 
+0

Quando si crea un componente utilizzando il flusso, è necessario fornire i parametri del tipo nella dichiarazione della classe per descrivere i tipi di oggetti di scena, oggetti di scena e stato predefiniti. [Ecco un utile articolo] (http://sitr.us/2015/05/31/type-checking-react-with-flow.html) – nem035

+0

Stavo seguendo l'esempio ufficiale Flow/React ES6 qui e non ho potuto ottenere questo funziona sia: http://flowtype.org/docs/react.html#defining-components-as-react-component-subclasses –

+0

Anche quello che mi infastidisce è con il flusso in esecuzione non-React su un file JS non mostrerà eventuali errori fino DOPO aver aggiunto annotazioni di tipo. Ma con React ES6 mi costringe a aggiungere annotazioni di tipo. –

risposta

1

L'unico errore di flusso è la capitale R in Refs? È in minuscolo nel codice che hai fornito, ma nel messaggio di errore è capitale.

+0

Sì, questa è la risposta giusta. [Flow sa che le classi 'React.Component' hanno una proprietà' ref'] (https://github.com/facebook/flow/blob/6cc92ca6d561964f05dc04585300422c2836e9df/lib/react.js#L43) e le proprietà della classe sono case sensitive –

Problemi correlati