reactjs - 如何在具有 Select 属性的材料 ui 文本字段中的“.MuiSelect-select”中增加最小宽度以及如何使用 Input 装饰访问 Selectfield
问题描述
当我在 chrome 开发工具中观察时,.MuiSelect-select 中的最小宽度为“16px”。我在这里使用带有 Select 属性的 Material-UI 文本字段。我需要将其覆盖为“25px”。此外,当我单击输入装饰选择字段时,它也不起作用。我不明白该怎么做。我提供了带有以下代码的代码框链接。任何帮助都会非常显着。提前致谢。
沙盒链接:https ://codesandbox.io/s/material-demo-forked-hjrb6?file=/demo.tsx
代码:
import React from "react";
import { createStyles, makeStyles, Theme, fade } from "@material-
ui/core/styles";
import {TextField, Typography} from "@material-ui/core";
import { TextValidator } from 'react-material-ui-form-validator';
import InputAdornment from '@material-ui/core/InputAdornment';
import MenuItem from '@material-ui/core/MenuItem';
const currencies = [
{
value: 'USD',
label: '$',
},
{
value: 'EUR',
label: '€',
},
{
value: 'BTC',
label: '฿',
},
{
value: 'JPY',
label: '¥',
},
];
const useStyles = makeStyles((theme: Theme) =>
createStyles({
root: {
"& > *": {
margin: theme.spacing(1),
width: "25ch"
}
}
})
);
const useStylesReddit = makeStyles((theme: Theme) =>
createStyles({
selectClass: {
minWidth: '20px'
}
})
);
export const MovingOutRedditTextField = (TextFieldProps) => {
const classes = useStylesReddit();
// const iconStyles = makeIconStyles();
const { id } = TextFieldProps;
return (
<TextField
id={id}
InputLabelProps={{
shrink: true,
}}
InputProps={{
classes,
disableUnderline: true,
endAdornment: (
<InputAdornment position="end">
<Typography
color="textSecondary"
>
currency
</Typography>
</InputAdornment>
)
}}
{...TextFieldProps}
/>
);
};
export default function BasicTextFields() {
const classes = useStyles();
const [currency, setCurrency] = React.useState('EUR');
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setCurrency(event.target.value);
};
return (
<MovingOutRedditTextField
select
classes={{select:classes.selectClass}}
required
style={{width:'400px'}}
label="Return"
id="securityDepoistReturn"
value={currency}
variant="filled"
>
{currencies.map((option) => (
<MenuItem key={option.value} value={option.value}>
{option.label}
</MenuItem>
))}
</MovingOutRedditTextField>
);
}
解决方案
使用select 的 prop定位select
类。classes
<Select
classes={{select:classes.selectClass}}
>
<MenuItem value="">
<em>None</em>
</MenuItem>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
const useStyles = makeStyles((theme: Theme) =>
createStyles({ selectClass:{
minWidth:'25px'
}
}),
);
更新
根据最近的评论,TextBox
使用并select
传递 prop 以使其成为选择框。因此,在这种情况下,要操作select ,请在.proper 中min-width
传递 classes 对象。应用于元素的道具 。SelectProps
TextBox
SelectProps
Select
<TextField
SelectProps={{
classes:{
select:classes.selectClass
},
}}
{...other props}
/>
推荐阅读
- javascript - 我成功构建了我的应用程序,但是当我运行它时,它崩溃了,这是我的 logcat 中提示的味精
- c# - ASP.NET C# OData 服务 + 导航属性 + $expand = null。我错过了什么?
- select - Erlang Mnesia select on an ordered_set 是否给出了 Erlang Term 顺序的列表?
- jquery - 如何使用 jQuery 按两列对表格进行排序?
- django - 如何创建具有特定区域的 Heroku 应用程序
- c++ - Int 到 ASCII 字符和 char 到 ASCII 数字 | C++
- python - 是否可以在 Tesseract 中提供时间模式?
- xcode - 我的颤振项目没有在 iOS 模拟器中打开
- python - 在特定时间段内过期的 Django 应用程序
- java - 在数组中,检查字符串是否相同,如果相同,则向上计数