Javascript | Jsx | |
---|---|---|
寫法 | 小寫 onclick | 小駝峰 onClick |
有無小括弧() | 有 | 無 |
格式 | 字串 | {} |
範例 | onclick="handleClickMessage()" | onClick={handleClickMessage} |
按了按鈕,訊息改變
執行以下步驟,會說明為什麼需要 Bind。
src
資料夾下新增一個 EventBind.js 檔案import React from 'react';
import './App.css';
import EventBind from './EventBind';
function App() {
return (
<div className="App">
<EventBind />
</div>
);
}
export default App;
確認出現一個 click 按鈕
import React, { Component } from 'react'
class EventBind extends Component {
constructor(props) {
super(props)
this.state = {
message: '初始訊息'
}
}
render() {
return (
<div>
<div>{this.state.message}</div>
<button>click</button>
</div>
)
}
}
export default EventBind
確認有設定的初始訊息
handleClickMessage() {
this.setState({
message: '訊息已改變'
})
}
render() {
return (
<div>
<div>{this.state.message}</div>
<button onClick={this.handleClickMessage}>click</button>
</div>
)
}
按了按鈕,出現 error 訊息
handleClickMessage() {
console.log(this);
this.setState({
message: '訊息已改變'
})
}
確認找不到綁定的this,因此 setState 才會 undefined
今天這篇實作時我一直搞不懂,問了同事為才真正了解了什麼時候 javascript 要加小括弧,什麼時候不用。
除此之外,若 javascript this
沒有確認好對象,就會出現範例中的 undefined 錯誤或者找錯對象,這篇實作對我來說受益良多。