我知道JavaScript的作用域,但可能我完全不理解它們,因爲這段代碼不起作用。函數不傳遞給Button的原因是什麼
此代碼使用React和Relay Modern框架。
有2個按鈕,第一個內部queryRender
,其被傳遞到中繼現代QueryRenderer
和第二個之後(見函數render
)。第二個工作正常,第一個不執行clickTest
函數。 (這是簡化的實際代碼版本)
class Candidates extends Component {
static propTypes = {
viewer: PropTypes.object
}
constructor (props) {
super(props)
this.clickTest = this.clickTest.bind(this)
}
clickTest() {
console.log('click works')
}
queryRender ({error, props}) {
if (error) {
return <pre>{error.message}</pre>
} else if (props) {
return (
<div>
<Button onClick={this.clickTest}>this DOESN'T work</Button>
</div>
)
}
return <Loader active>Loading...</Loader>
}
render() {
return (
<div>
<QueryRenderer
environment={environment}
query={query}
render={this.queryRender}
/>
<Button onClick={this.clickTest}>this works</Button>
</div>
)
}
}
query
該變量被定義,我只是沒有包括在該摘錄。
當我第一次substitue按鈕的onClick功能與匿名一個
<Button onClick={() => this.clickTest()}>this DOESN'T work</Button>
然後我得到這樣的錯誤:遺漏的類型錯誤:_this2.clickTest不是一個函數
任何人都可以向我爲什麼這個代碼解釋行爲的方式呢?
謝謝,我沒想過綁定'queryRender'函數。這解決了我的問題。 – Pawel