【发布时间】:2021-11-02 06:03:24
【问题描述】:
我有一组接口Subjects 的对象。我只想要该数组中的一个对象,并将其作为道具传递给组件以呈现该数据。 “我是 Typescript 的新手”。
export interface Subjects {
id: number;
subject: string;
subjectName: string;
periods: number[];
faculty: string;
slot: string;
code: string;
googleClassRoomLink?: string;
googleMeetLink?: string;
}
export const Main: React.FC = () => {
const [allData, setAllData] = useState<Subjects[]>(s4);
const [currentPeriod, setCurrentPeriod] = useState<string | null>(null);
const [subjectInfo, setSubjectInfo] = useState<Subject | null>(null);
useEffect(() => {
const data = allData.filter((item) => item.subject === currentPeriod);
setSubjectInfo(data);
}, [currentPeriod]);
return (
<div className="Main">
<Table subjects={allData} setCurrentPeriod={setCurrentPeriod} />
{currentPeriod && subjectInfo && (
<DisplayInfo subjectsInfo={subjectInfo} />
)}
</div>
);
};
这是第二个组件
import { Subjects } from './Main';
interface Props {
subjectsInfo: Subjects;
}
export const DisplayInfo: React.FC<any> = ({ subjectsInfo }) => {
console.log(subjectsInfo);
return (
<div className="DisplayInfo">
<div>
<h3>{subjectsInfo.subjectName}</h3>
<h4>{subjectsInfo.subject}</h4>
<h4>{subjectsInfo.faculty}</h4>
<h4>{subjectsInfo.slot}</h4>
<h4>{subjectsInfo.code}</h4>
<button>ClassRoom</button>
<button>Meet</button>
</div>
</div>
);
};
现在打字稿说我做不到
Argument of type 'Subjects[]' is not assignable to parameter of type 'SetStateAction<Subjects | null>'. Type 'Subjects[]' is not assignable to type '(prevState: Subjects | null) => Subjects | null'. Type 'Subjects[]' provides no match for the signature '(prevState: Subjects | null): Subjects | null'.
【问题讨论】:
-
在这一行:
const [allData, setAllData] = useState<Subjects[]>(s4);什么是s4? -
另外,在
const [subjectInfo, setSubjectInfo] = useState<Subject | null>(null);这一行中,您是在某处为Subject定义接口,还是拼写错误?
标签: typescript react-typescript react-tsx