我在学习ReactJS和Redux,我无法弄清楚如何在绑定它的onChange回调到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);
我使用的是一个解决方案,我觉得丑(不能重复使用=>不是很'组件友好')通过我的文本字段设置的id
,并访问与document.getElementById('myField').value
值我怎么能摆脱这种id
的,并且用类似textFieldRef.value
我的回调里面访问它?
我尝试没有.bind(this)
,这给了我通过this
访问我的TextField实例,但我不能再访问我的this.props.setDataValue()
功能,因为this
不绑定到我的课堂情境。
谢谢!
谢谢你的快速答案!就是这样,这个事件,我怎么会想念那个? 我非常了解使用document.getElementById在React中是一个非常糟糕的练习,但我找不到另一个解决方案,因此我的问题:) 我应该更仔细地阅读material-ui文档,再次感谢您。 –