私はReactJSとReduxを学んでいます。私は、そのコールバックをthis
にバインドしている間にTextFieldインスタンスにアクセスする方法を理解できません。ReactJS、Redux、およびES2015でonChangeコールバックを 'this'に正しくバインドする方法はありますか?
(私はこの例ではmaterial-uiを使用していますが、私はそれなしで全く同じ問題が発生します)
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);
私は '=>非常ない再利用できません(醜い見つけるソリューションを使用しています私のTextFieldにid
を設定することにより、コンポーネントに優しい ')、およびdocument.getElementById('myField').value
と、その値にアクセスするにはどうすればこのid
を取り除く、そして私のコールバックの内側textFieldRef.value
ようなもので、それをアクセスし得るだろうか?
私は私にthis
を通して私のTextFieldインスタンスへのアクセスを与える、.bind(this)
なしで試したが、this
は私のクラスのコンテキストにバインドされていないので、私はもはや私のthis.props.setDataValue()
機能にアクセスすることができます。
ありがとうございました!
ありがとうございました!それは、イベントです、どうすればそれを逃すことができますか? Reactで非常に悪い習慣であるdocument.getElementByIdを使用していることをよく知っていますが、私は別の解決策を考え出すことができませんでした。したがって、私の質問:) 私はmaterial-uiドキュメントをもっと慎重に読んでください。 。 –