2016-11-08 75 views
2

我有一個與onChange處理器陣營組件:如何在導出的React組件中註釋onChange事件?

// @flow 
import React, {Component} from 'react'; 

export default class MyList extends Component { 
    handleChange = (event) => { 
    // Do something with event.target.value 
    // which will be the value typed in the input field. 
    } 

    render() { 
    return (
     <input type="text" onChange={this.handleChange}> /> 
    ); 
    } 
} 

和流量抱怨這個,因爲它是一個出口類: Parameter `event` missing annotation

我怎樣才能標註在handleChange功能event參數?據我所知,這個事件是在JavaScript級別生成的,並沒有任何Flow類型。

或者,可以將Flow配置爲不顯示這些「缺少註釋」錯誤?

回答

3

你可以找到這裏分型https://github.com/facebook/flow/blob/master/lib/dom.js

handleChange = (event: Event) => { 
    if (event.target instanceof HTMLInputElement) { 
    console.log(event.target.value) 
    } 
} 
+0

感謝。最初我嘗試了'Event',但它不起作用,但在更新到最新版本的流程(通過brew)並在我的'.flowconfig'文件的'[options]'下添加'esproposal.class_instance_fields = enable'後,我不對此沒有任何進一步的錯誤或警告。但是,現在我收到一條錯誤消息,指出無法找到屬性「value」。任何想法如何解決這個問題? 'event.target'將'input'標籤作爲JS對象返回。 –

+1

@RyanH。下面是帶流量0.34工作的完整示例https://flowtype.org/try/#0PTAEAEDMBsHsHcBQBLAtgB1gJwC6gEoCmAhgMY4A0oA3qAMKwawB2hzeAvqJFo6AORYS5fgG5EiQgA9MuUABNCkYgFdoeUtGIBnbaACyATwAyybXmk428vQyat2NRKFDPQAC2LN50QnU-MAOaEoAC8oAAUhABubDgAXKAAorHsAJRhAHxOLgCQyJCRMXEAdDjEWMF4yMzmXqSEsIUAEgAq+sYAkszoKjhJvqhxGdRuLi6kLNqwviVwgVGpOGUVVSXRxNAqhGnieRxuB+OuHEA –

2

我發現了另一個解決方案,使用合成事件:像下面

onChange (event: SyntheticInputEvent<EventTarget>): void { 
 
    this.setState({ text: event.target.value }) 
 
}