render 方法是必要的,其他都是可選的
※
class Interval extends React.Component {
constructor(p) {
super(p)
console.log("constructor")
this.state = {
opa:1
}
}
handleCloseInternal() {
console.log("按關閉了")
ReactDOM.unmountComponentAtNode(document.querySelector("#div1"))
}
componentWillMount() {
console.log("componentWillMount")
}
componentDidMount() {
console.log("componentDidMount")
}
componentWillUpdate() {
console.log("componentWillUpdate")
}
componentDidUpdate() {
console.log("componentDidUpdate")
}
componentWillUnmount() {
console.log("componentWillUnmount")
}
render() {
console.log("render")
return (
<div>
<h1 style={{opacity:this.opa}}>{this.props.title}
關閉, document.querySelector("#div1"));
※覆寫的方法都是 component 開頭
※componentWillUnmount 要按關閉鈕才會執行
※componentWillMount -> render -> componentDidMoun,在 render 前後各有方法執行
※componentWillUpdate 和 componentDidUpdate 會在 setState 前後執行,但此例沒寫 setState,所以沒執行
※文字漸淡效果
class Interval extends React.Component {
constructor(p) {
super(p)
console.log("constructor")
this.state = {
opa:1
}
}
handleCloseInternal() {
console.log("按關閉了")
ReactDOM.unmountComponentAtNode(document.querySelector("#div1"))
}
componentWillMount() {
console.log("componentWillMount")
}
componentDidMount() {
console.log("componentDidMount")
/*
this.intervalId = setInterval(() => {
let {opa} = this.state
opa -= 0.2
if(opa <= 0) {
opa = 1
}
this.setState({opa})
}, 500)
*/
this.intervalId = setInterval(function() {
let {opa} = this.state
opa -= 0.2
if(opa <= 0) {
opa = 1
}
this.setState({opa})
}.bind(this), 500)
}
componentWillUpdate() {
console.log("componentWillUpdate")
}
componentDidUpdate() {
console.log("componentDidUpdate")
}
componentWillUnmount() {
console.log("componentWillUnmount")
clearInterval(this.intervalId)
}
render() {
console.log("render")
return (
<div>
<h1 style={{opacity:this.opa}}>{this.props.title}
關閉, document.querySelector("#div1"));
※注意 style 是用兩個花括號
※setInterval 使用箭頭函數可以不用 bind
※小數點會有誤差,所以用 <= 0
沒有留言:
張貼留言