我在用户定义的material-ui/TextField
中设置了component
。
用户定义的component
名为LabelTextField
。
我在用户定义的LabelTextField
中呈现了几个component
,其名为TextList
。
我的问题是如何在textField
组件中获取TextList
的值。
视图组件中的TextList
组件旁边有一个按钮。当有人点击按钮时,我会保存所有TextField
值。
我将在TextList
组件中发布网络请求,以将值保存到后端。
我正在使用redux
。
每个material-ui/TextField
是否应该在value
回调函数中调度onChange
?
onChange
位于本网站的底部:
http://www.material-ui.com/#/components/text-field
我的英语很差。请告诉我代码,以确保我理解。
我的中心代码:
LabelTextField
:
textChangeFun = (value) => {
}
render() {
return (
<div>
<div style={{fontSize:0}}>
<div style={inlineStyle}>
<FlatButton disableTouchRipple={true} disabled={true} label={this.props.labelValue} />
</div>
<div style={inlineStyle}>
<TextField
hintText={this.props.textValue}
/>
</div>
</div>
</div>
);
}
TextList
:
render(){
return (
<div>
{demoData.map((item,id) =>
<LabelTextField key={id} labelValue={item.label} textValue={item.text} ></LabelTextField>
)}
</div>
)
}
答案 0 :(得分:0)
您需要为LabelTextField提供更改事件的处理程序。
class LabelTextField extends React.Component {
onChange(e) {
this.props.onChange({ id: this.props.id, value: e.currentTarget.value })
}
render() {
return (
<div>
<div style={{fontSize:0}}>
<div style={inlineStyle}>
<FlatButton disableTouchRipple={true} disabled={true} label={this.props.labelValue} />
</div>
<div style={inlineStyle}>
<TextField
hintText={this.props.textValue}
onChange={this.onChange.bind(this)}
/>
</div>
</div>
</div>
);
}
}
class TextList extends React.Component {
constructor() {
super();
this.state.textFields = {}; // TODO: get initial state from demoData
this.onTextFieldChange = this.onTextFieldChange.bind(this);
}
onTextFieldChange = ({ id, value }) {
const { textFields } = this.state;
textFields[id] = value;
this.setState({ textFields });
}
render(){
return (
<div>
{demoData.map((item,id) =>
<LabelTextField key={id} labelValue={item.label} textValue={item.text} onChange={this.onTextFieldChange} ></LabelTextField>
)}
</div>
)
}
}
这样,只要textField发生更改,就会调用onTextFieldChange
处理程序并更新TextList
状态。
如果您遇到更复杂的情况,可以考虑使用redux甚至http://redux-form.com/6.5.0/