【发布时间】:2021-04-27 21:53:14
【问题描述】:
我使用了带有“Select”属性的 Material UI TextField 来使其成为 SelectField。我在输入装饰中有文本。单击输入装饰文本时,我需要访问 SelectField 选项。我不明白该怎么做。我在下面提供沙盒链接。谁能帮我这个?谢谢你。
沙盒链接:https://codesandbox.io/s/material-demo-forked-bykj0?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 { 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>
);
}
【问题讨论】:
-
你能按照你期望的样子制作一张图片吗?
标签: reactjs material-ui