前提・実現したいこと
React、Javascript初心者なので、必要な情報が足りないかもしれません。
すみませんが、足りない情報があればご教示お願い致します。
ReactでMaterial-UIのNativeSelectについて質問があります。
親要素いっぱいにSelectのリストを表示したいです。
現在は高さが固定されていてスクロールバーが出てしまいます。
NativeSelectではなくても構わないので、
ドロップダウンのような形式ではなくNativeSelectのような初めからリストが表示されていて、
複数選択できるようなものがあればご紹介いただきますとうれしいです。
該当のソースコード
React
1import React from 'react'; 2import { makeStyles, useTheme } from '@material-ui/core/styles'; 3import InputLabel from '@material-ui/core/InputLabel'; 4import FormControl from '@material-ui/core/FormControl'; 5import Select from '@material-ui/core/Select'; 6 7const useStyles = makeStyles((theme) => ({ 8 formControl: { 9 margin: theme.spacing(1), 10 minWidth: 120, 11 maxWidth: 300, 12 }, 13 chips: { 14 display: 'flex', 15 flexWrap: 'wrap', 16 }, 17 chip: { 18 margin: 2, 19 }, 20 noLabel: { 21 marginTop: theme.spacing(3), 22 }, 23 selectArea: { 24 height: '100%', 25 }, 26})); 27 28const names = [ 29 'Oliver Hansen', 30 'Van Henry', 31 'April Tucker', 32 'Ralph Hubbard', 33 'Omar Alexander', 34 'Carlos Abbott', 35 'Miriam Wagner', 36 'Bradley Wilkerson', 37 'Virginia Andrews', 38 'Kelly Snyder', 39]; 40 41export default function MultipleSelect() { 42 const classes = useStyles(); 43 const theme = useTheme(); 44 const [personName, setPersonName] = React.useState([]); 45 46 const handleChangeMultiple = (event) => { 47 const { options } = event.target; 48 const value = []; 49 for (let i = 0, l = options.length; i < l; i += 1) { 50 if (options[i].selected) { 51 value.push(options[i].value); 52 } 53 } 54 setPersonName(value); 55 }; 56 57 return ( 58 <div> 59 <FormControl className={classes.formControl}> 60 <InputLabel shrink htmlFor="select-multiple-native"> 61 Native 62 </InputLabel> 63 <Select 64 className={classes.selectArea} {* ←height:100%を指定しました。 *} 65 multiple 66 native 67 value={personName} 68 onChange={handleChangeMultiple} 69 inputProps={{ 70 id: 'select-multiple-native', 71 size: 28, {* ←頂いた内容を反映しました。 *} 72 }} 73 > 74 {names.map((name) => ( 75 <option key={name} value={name}> 76 {name} 77 </option> 78 ))} 79 </Select> 80 </FormControl> 81 </div> 82 ); 83}
試したこと
公式ページのデモやprops一覧を参考にしているのですが、高さの変更方法がわからなくて詰まっています。
補足情報
初めての質問なので、不足している情報等あれば教えてください。
よろしくお願いします。
あなたの回答
tips
プレビュー