2016-06-09 82 views
0

更改輸入時,它僅打印'input changes',但不打印'bubbles'。任何想法爲什麼?react onChange似乎沒有正確冒泡

const InputWrapper = React.createClass({ 
    change() { 
     console.log('input changes') 
    }, 
    render() { 
     return (
      <input onChange={this.change}/> 
     ); 
    } 
}); 

const App = React.createClass({ 
    change() { 
     console.log('bubbles'); 
    }, 
    render() { 
     return (<InputWrapper onChange={this.change} />); 
    } 
}); 

https://jsfiddle.net/stevemao/6nxvvkwy/5/

編輯:不,它會自動泡沫無須傳召InputWrapperthis.props.change?來自官方文檔:與所有DOM事件一樣,onChange prop在所有本機組件上都受支持,並可用於偵聽冒泡的更改事件。

+0

當你說「只有」時,你的意思是你希望他們都出現?如果你想調用打印氣泡的change方法,你必須使用this.props.onChange而不是this.change – QoP

+0

你只需要設置'InputWrapper'的'onChange'屬性,而不是調用它。 https://jsfiddle.net/6nxvvkwy/6/ –

+0

它不會自動冒泡嗎?在真正的我不需要稱呼它。來自官方文檔:與所有DOM事件一樣,onChange prop在所有本機組件上都受支持,並可用於偵聽冒泡的更改事件。 @Qop – stevemao

回答

0

非常簡單...當你打電話給this.changeInputWrapper,你從來沒有打電話做傳遞change道具從App。你應該像這樣修改它...

const InputWrapper = React.createClass({ 
    change() { 
    console.log('input changes') 
    this.props.onChange() 
    }, 
    render() { 
    return (
     <input onChange={this.change}/> 
    ); 
    } 

});

+0

它不會自動冒泡嗎?在真正的我不需要稱呼它。來自官方文檔:與所有DOM事件一樣,onChange prop在所有本機組件上都受支持,並可用於偵聽冒泡的更改事件。 – stevemao