reactjs - 从 MaterialUI 包中键入 Select 对象时出现问题
问题描述
我正在尝试使用 typescript/reactjs 实现 MaterialUI Select 组件。但是,我在实例化 Select 时遇到了问题。
我收到输入错误:
Type 'Courses' is missing the following properties from type 'Options[]': length, pop, push, concat, and 28 more. TS2740
我不明白为什么会发生这个错误,我什至没有它,出于什么原因我需要包含 Courses 类型,如果我作为参数传递给 select 的是一个名为“课程”,并带有属性 id 和 name。我不明白。
选择组件:
import React from 'react';
import { TextField, MenuItem, TextFieldProps } from '@material-ui/core';
import { useField, useFormikContext } from 'formik';
interface Options {
id: number;
name: string;
}
type ITextFieldProps = TextFieldProps & {
name: string;
options: Options[];
};
const SelectWrapper: React.FC<ITextFieldProps> = ({
name,
options,
...otherProps
}) => {
const { setFieldValue } = useFormikContext();
const [field, meta] = useField(name);
const handleChange = (evt: React.ChangeEvent<any>) => {
const { value } = evt.target;
setFieldValue(name, value);
};
const configSelect = {
...field,
...otherProps,
select: true,
fullWidth: true,
onChange: handleChange,
error: false,
helperText: '',
};
if (meta && meta.touched && meta.error) {
configSelect.error = true;
configSelect.helperText = meta.error;
}
return (
<TextField variant="outlined" {...configSelect}>
{options.map(opt => {
return (
<MenuItem key={opt.id} value={opt.id}>
{opt.name}
</MenuItem>
);
})}
</TextField>
);
};
export default SelectWrapper;
我打电话的位置选择:
<Grid item xs={12}>
<Select
name="course"
label="Selecione um Curso"
options={courses}
size="small"
/>
</Grid>
课程对象: 我从 API 获取此对象,并通过选择组件中的课程参数传递它。
{
{
"id": 10053,
"name": "Direção Defensiva – Controle de Acidentes Ambev - 2021 (Distribuição)"
},
{
"id": 10052,
"name": "Segurança na Operação de Empilhadeira – 2021"
}
}
解决方案
你可能想做 options={courses.map(({I'd, name}) => ({id, name}))}
推荐阅读
- python - 如何使用 Django Modelseirallizer 更新实例的粒子属性?
- java - 是否有引入 Java 数据类的预期日期?
- mysql - 如果另一个表B在mysql中有行,则选择表A中的所有行
- python - 在 Spyder 中使用 OpenPyxl 和 sqlite3 将数据从 Excel 文件导入数据库
- python - np.logical_or 与 reduce 返回不同的结果
- c - 如何从数组中删除 0 并将值分配给 C 中的锯齿状数组
- c# - 在 Where() 查询中将 Any() 的 lambda 表达式作为方法参数传递
- java - 为什么我的循环仅在我输入一个额外的换行符时才起作用,但在循环后跳过另一段代码?
- c++ - 用于自定义类的带有 {fmt} 的自定义格式说明符
- javascript - 测试素数程序