Sto imparando ReactJS e Redux e non riesco a capire come ottenere l'accesso all'istanza TextField mentre leghi la richiamata onChange a this
.Come associare correttamente il callback di Change a "this" con ReactJS, Redux ed ES2015?
(sto usando material-ui per questo esempio, ma vorrei incontrare abbastanza lo stesso problema senza di esso)
import React, {Component} from 'react';
import { connect } from 'react-redux';
import { setDataValue } from './actions/data';
import TextField from 'material-ui/lib/text-field';
import Paper from 'material-ui/lib/paper';
export class DataInput extends Component {
constructor(props){
super(props);
}
handleTextChange() {
this.props.setDataValue(document.getElementById('myField').value);
}
render(){
return (
<Paper style={{
width: '300px',
margin: '10px',
padding: '10px'
}}>
<TextField
id='myField'
defaultValue={this.props.data.value}
onChange={this.handleTextChange.bind(this)} />
</Paper>
);
}
}
export default connect(
(state) => ({data: state.data}),
{setDataValue}
)(DataInput);
sto usando una soluzione che trovo brutto (non riutilizzabile => non molto ' componente-friendly ') impostando un id
sul mio TextField, e l'accesso il suo valore con document.getElementById('myField').value
Come potrei liberarmi di questo id
, e accedervi con qualcosa come textFieldRef.value
dentro il mio richiamata?
ho giudicato senza .bind(this)
, che mi dà l'accesso alla mia istanza TextField attraverso this
, ma io non può più accedere al mio funzione this.props.setDataValue()
dal this
non è binded al mio contesto classe.
Grazie!
Grazie per la tua risposta rapida! È così, l'evento, come potrei mancarlo? Sono molto consapevole dell'utilizzo di document.getElementById essendo una pessima pratica in React, ma non riuscivo a capire un'altra soluzione, quindi la mia domanda :) Avrei dovuto leggere il materiale-ui documenti più attentamente, grazie ancora . –