我正在構建一個小聊天應用程序.i已使用Material UI TextField輸入用戶消息。但我不能提及它。我讀了這個。他們說他們不支持refs
。 這是我的代碼。它的工作原理。Material UI組件引用不起作用
class App extends Component {
constructor() {
super();
this.state = {
q: "default"
};
}
handleChanges(val) {
this.setState({ q: val });
}
handleSearch(val) {
this.setState({ q: val });
console.log(this.state.q);
}
render() {
return (
<div className="App">
<h1> {this.state.q}</h1>
<Row className="show-grid">
<Col sm={2} md={4} className="contact"><h5>contact</h5><br /></Col>
<Col sm={10} md={8} className="chat grid-border"><h5>chat</h5><br />
<div className="history"></div>
<div className="message top-border">
<input type="text" ref="question" onChange={(e) => { this.handleChanges(this.refs.question.value) }} />
<MuiThemeProvider>
<FlatButton label="Primary" primary={true} onTouchTap={(e) => { e.preventDefault(); this.handleSearch(this.refs.question.value); }} />
</MuiThemeProvider>
</div>
</Col>
</Row>{/*show-grid ends here*/}
</div>
);
}
}
export default App;
如果我用這種材料UI TextField
,而不是本地的HTML輸入標記它不會從參考價值。
<MuiThemeProvider>
<TextField hintText="Ask your question" fullWidth={true} multiLine={true} rows={2} rowsMax={4} type="text" ref="question" onChange={(e) => { this.handleChanges(this.refs.question.value) }}/>
</MuiThemeProvider>
是否有任何解決方法或替代用戶界面庫?
感謝您的努力。 – IsuruAb
好的解決方案。如果我們添加另一個元素,相同的方法將無法工作。將需要編寫一個重複的方法。理想情況下,在2個TextField上給定ref =「a」和ref =「b」的refs,我們可以在setState方法中檢查this.refs.a.value和this.refs.b.value,但這不起作用與材質用戶界面。 –