reactjs - 如何在不使用反应钩子的情况下更改 Material-UI 文本字段的高度
问题描述
我需要将类组件中的多行材质-UI TextField 的高度更改为更长,但是我在 SO 上找到的先前示例似乎使用了功能组件和挂钩。
我的代码可以在下面或这个沙箱中找到
import React, { Component } from "react";
import ReactDOM from "react-dom";
import TextField from "@material-ui/core/TextField";
class App extends Component {
constructor(props) {
super(props);
this.state = {
year: "2010",
otherAttributes: ""
};
}
handleChangefor = (propertyName) => (event) => {
this.setState({
...this.state,
[propertyName]: event.target.value
})
}
render() {
return (
<div>
<p>text field below </p>
<TextField
id="outlined-multiline-flexible"
label="year"
multiline
rowsMax="10"
value={this.state.year}
onChange={this.handleChangefor("year")}
margin="normal"
helperText=""
variant="filled"
/>
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
文档指向 'makeStyle' 和 'useStyle' hoc,但我找不到在类组件上使用它们的示例。
解决方案
你应该可以使用withStyles
- 我必须使用minHeight
......使用只是height
对我不起作用..
编辑:TextFields
由于您在一个班级中询问多个,我已经更新了我的答案。
具有单个文本字段的单个类:
import React, { Component } from "react";
import ReactDOM from "react-dom";
import TextField from "@material-ui/core/TextField";
import { withStyles } from "@material-ui/core/styles";
const styles = {
someTextField: {
minHeight: 420
}
};
class App extends Component {
constructor(props) {
super(props);
this.state = {
year: "2010",
otherAttributes: "",
};
}
handleChangefor = (propertyName) => (event) => {
this.setState({
...this.state,
[propertyName]: event.target.value
})
}
render() {
return (
<div>
<p>text field below </p>
<TextField
id="outlined-multiline-flexible"
label="year"
multiline
rowsMax="10"
value={this.state.year}
onChange={this.handleChangefor("year")}
margin="normal"
helperText=""
variant="filled"
InputProps={{ classes: { input: this.props.classes.someTextField } }}
/>
</div>
);
}
}
const StyledTextFieldApp = withStyles(styles)(App)
const rootElement = document.getElementById("root");
ReactDOM.render(<StyledTextFieldApp />, rootElement);
具有多个文本字段的单个类:
import React, { Component } from "react";
import ReactDOM from "react-dom";
import TextField from "@material-ui/core/TextField";
import { withStyles } from "@material-ui/core/styles";
const styles = {
someTextField: {
minHeight: 420
},
someOtherTextField: {
minHeight: 120,
}
};
class App extends Component {
constructor(props) {
super(props);
this.state = {
year: "2010",
otherAttributes: "",
};
}
handleChangefor = (propertyName) => (event) => {
this.setState({
...this.state,
[propertyName]: event.target.value
})
}
render() {
return (
<div>
<p>text field below </p>
<TextField
id="outlined-multiline-flexible"
label="year"
multiline
rowsMax="10"
value={this.state.year}
onChange={this.handleChangefor("year")}
margin="normal"
helperText=""
variant="filled"
InputProps={{ classes: { input: this.props.classes.someTextField } }}
/>
<TextField
id="outlined-multiline-flexible"
label="year"
multiline
rowsMax="10"
value={this.state.year}
onChange={this.handleChangefor("year")}
margin="normal"
helperText=""
variant="filled"
InputProps={{ classes: { input: this.props.classes.someOtherTextField } }}
/>
</div>
);
}
}
const StyledTextFieldApp = withStyles(styles)(App)
const rootElement = document.getElementById("root");
ReactDOM.render(<StyledTextFieldApp />, rootElement);
推荐阅读
- android - 自定义事件上的胶子开关场景
- python - 更新类对象列表
- c# - 通过 socket tcp/ip 将图像从客户端传输到服务器
- scala - 带括号和没有模式匹配的单例对象的区别?
- c - 如何解决 GCC 编译 [-Wformat] 警告?
- javascript - 有没有办法在点击时选择数组元素的索引?
- ruby-on-rails - 我需要编写规范来检查允许的参数以进行创建操作并获取错误
- javascript - Gatsby Markdown 图像被模糊的跨度卡住
- docker - 使用 Docker 构建缓存 Rust 依赖项
- sql-server - 为什么在链接服务器中找不到数据库