Ich habe zwei Beispiele mit der ref callback attribute
. Das erste on hat einen Verweis auf die Callback-Funktion. Der zweite hat eine anonyme Funktion, die als Wert deklariert wird.Ref Callback-Attribut funktioniert nicht wie erwartet
Die erste funktioniert wie erwartet. Aber, der zweite log a null
auf aufeinanderfolgende Rendern.
Was ist der Grund dafür?
Beispiel 1 (das funktioniert gut)
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>
Beispiel 2 (diese nicht funktioniert)
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.setState ({Wert: this.refs.whatever.value})} /> ' –
Ich weiß' ref string' wird funktionieren.Ich muss über 'ref Rückrufattribut' wissen. React wird in zukünftigen Versionen die Angabe 'string ref' ablehnen. –
' this.irgendwas = ref} onChange = {() => this.setState ({value: this.whatever .input.value})} /> ' –