React Material UI Select 无法正常工作

mynameismyname1010101

我正在尝试使用我将选择并用于表单数据的选项从 react Material UI 库中填充 Select Component,我可以填充 Select,但它不会让我选择任何选项!这是代码:

import React, { useState, useEffect } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Paper from '@material-ui/core/Paper';
import Box from '@material-ui/core/Box';
import Select from '@material-ui/core/Select';
import MenuItem from '@material-ui/core/MenuItem';
import InputLabel from '@material-ui/core/InputLabel';
import { spacing } from '@material-ui/system';
import Card from '@material-ui/core/Card';
import Button from '@material-ui/core/Button';
import Typography from '@material-ui/core/Typography';
import { CardHeader, TextField, CircularProgress } from '@material-ui/core';
import { useDispatch, useSelector } from 'react-redux';
import { movieAction } from '../actions/movieActions';
import { IAppState } from '../store/store';
import axios from 'axios';

const GenreSelect = () => {

  const dispatch = useDispatch()

  const [genreChoice, setGenreChoice] = useState('')

  const getGenres = () => {
    console.log('actions dispatched')
    dispatch(movieAction())
  }

  const handleGenreChange = (event: React.ChangeEvent<{ value: unknown }>) => {
    setGenreChoice(event.target.value as string);
    console.log(event.target.value)
  };

  useEffect(() => {
    getGenres()
  }, [])

  const genres = useSelector((state: IAppState) => state.movieState.genres);
  
  const List = () => genres.map((genre: any) => {
    return <MenuItem key={genre.id} value={genre.id}>{genre.name}</MenuItem>
  })

  return (
    <>
    <InputLabel htmlFor="demo-simple-select-label">Genres</InputLabel>
    <Select
    labelId="demo-simple-select-label"
    id="demo-simple-select"
    value={genreChoice}
    onChange={handleGenreChange}
    >
      <List></List>
    </Select>
    </>
  )
}


const MovieForm = () => {
  return (
    <>
    <h1>Movie Suggester</h1>
    <Paper elevation={3}>
      <Box p={10}>
        <Card>
          <GenreSelect></GenreSelect>
          <Button onClick={() => console.log(axios.get(`https://api.themoviedb.org/3/discover/movie?api_key=${process.env.REACT_APP_MOVIE_API_KEY}&language=en-US&sort_by=popularity.desc&include_adult=false&include_video=false&with_genres=35&page=1`))}>Click me</Button>
        </Card>
      </Box>
    </Paper>
    </>
  )
}


export default MovieForm

我第一次点击选择框时,它会向我显示所有选项,在控制台中记录一个错误(下面的屏幕截图),然后当我尝试点击选项时,它不会让我选择任何选项,也不会触发任何选项控制台错误,只是给我选项点击涟漪效应。

这是两个有用的屏幕截图: 选择和数据

Console.log 错误

谢谢参观

可爱的派斯特

您遇到的错误与 material-ui 包如何使用 ref 转发有关。Select组件期望其子组件接受转发的引用,而您的List组件则不接受。

我认为您需要做的就是将映射移动到 内部Select而不是将其定义为单独的功能组件。

  return (
    <>
    <InputLabel htmlFor="demo-simple-select-label">Genres</InputLabel>
    <Select
    labelId="demo-simple-select-label"
    id="demo-simple-select"
    value={genreChoice}
    onChange={handleGenreChange}
    >
      {(genres || []).map((genre: any) => {
         return <MenuItem key={genre.id} value={genre.id}>{genre.name}</MenuItem>
      })}
    </Select>
    </>

现在SelectMenuItems的孩子没有包装他们。

那能解决吗?

编辑:

替换genres.map(genres || []).map以避免在选择器返回时出现 TypeError null

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Select内的React Material-UI Chip的onDelete无法正常工作

React material-ui KeyboardDatePicker和Formik无法正常工作

React Hooks:UseRef无法从Material UI Select中识别事件

具有React Router 4实现的Material UI AppBar无法正常工作

Material-UI工具提示无法正常工作

material-ui组件演示无法正常工作

无法使Material-UI日期选择器正常工作

Material UI Datagrid 的过滤功能无法正常工作

React Material Design 图标悬停无法正常工作

无法正确渲染Material UI React Grid

WithStyles无法在Material UI中用于React

React如何删除Material-UI Select的动画

增强react-select到material-ui的布局集成

React Material-UI Select 未检测到滚动事件

尽管React.js Material-UI项目在本地工作,但无法在Codepen上工作

Bootstrap与Material UI for React?

React Material UI网格

React Material UI onFocusOut

React Material UI 滑块

Material-UI 主题停止工作升级 @material-ui/core & @material-ui/styles (REACT & Next.js)

无法使date-fns在material-ui / react中工作。不断发现错误

React - Material UI | 找不到模块:无法解析“material-ui/Button”

ReactJS和Material UI-ClickawayListener在Shadow DOM中无法正常工作

如果我使用material-ui ButtonGroup创建自定义按钮,则无法正常工作

React material-ui,网格列表无法渲染网格

无法通过unpkg使用MATERIAL-UI和React

React Material-UI 无法调整表格大小

无法获取Material-UI的目标属性-选择React组件

React Material ui表无法从行获取元素