overview
在React中,提供了受控和非受控兩種方式來操作input的value辟灰,提供非受控方式的意義在于提供了一個(gè)能直接操作底層DOM的接口个榕,那么React提供defaultValue的意義是什么呢
sense of defaultValue
我們知道defaultValue是用來設(shè)置非受控input的默認(rèn)值,那么我們先來思考芥喇,沒有defaultValue這個(gè)API西采,我們要如何實(shí)現(xiàn)給非受控的input設(shè)置默認(rèn)值
set default value for uncontrol input
我們要設(shè)置非受控input的值,那么就需要操作DOM继控,就需要在組件掛載到DOM的時(shí)候才能去操作械馆,也就是在lifecyclecomponentDIdMount
中來操作
class MyComponent extends Component {
componentDidMount() {
this.input.value = 'default value'
}
render() {
return <input ref={input => this.input = input} />
}
}
CONS
其實(shí)就是操作了一次DOM胖眷,如果能在組件掛載到DOM之前就設(shè)置好value就能避免了一次DOM的操作
const inputElement = document.createElement('input')
inputElement.setAttribute('value', 'hello')
document.body.appendChild(inputElement)
conclusion
所以React之所以提供defaultValue這個(gè)API,一方面是提供便利的API讓開發(fā)者避免去手動(dòng)設(shè)置霹崎,避免模版代碼珊搀,另一方面,在掛載到DOM之前就設(shè)置好input的值也能減少一次DOM的操作提高性能