У меня есть два примера, используя ref callback attribute
. Первая функция имеет ссылку на функцию обратного вызова. Вторая имеет анонимную функцию, объявленную как значение.Атрибут обратного вызова ref работает не так, как ожидалось
Первые работы, как и ожидалось. Но, во-вторых, запишите null
на последовательных рендерах.
Что является причиной этого?
Пример 1 (это работает отлично)
class App extends React.Component{
constructor(props){
super(props)
this.refCallback = this.refCallback.bind(this)
this.state = {}
}
refCallback(el){
console.log(el)
}
render(){
return <input type="text"
value={this.state.value}
ref={this.refCallback}
onChange={(e) => this.setState({value: e.target.value})}
/>
}
}
ReactDOM.render(<App/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
Пример 2 (это не работает)
class App extends React.Component{
constructor(props){
super(props)
this.state = {}
}
render(){
return <input type="text"
value={this.state.value}
ref={(el) => console.log(el)}
onChange={(e) => this.setState({value: e.target.value})}
/>
}
}
ReactDOM.render(<App/>, document.getElementById('app'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
'<входной тип = "текст" значение = {this.state.value} исх = "все" OnChange = {() => this.setState ({значение: this.refs.whatever.value})} /> ' –
Я знаю, что' ref string' будет работать.Мне нужно знать об атрибуте ref refback. React будет обесценивать 'string ref' в будущих выпусках. –
' this.whatever = ref} onChange = {() => this.setState ({значение: this.whatever .input.value})} /> ' –