【发布时间】:2021-11-10 16:28:05
【问题描述】:
我通过功能组件使用 React。我的一个组件具有由其父组件传递的道具,例如:
const About = () => {
const { data } = useFetch('About');
return (
<div>
{data && (
<div>
<Title title={data.custom_title} />
<Card
text={data.body}
>
<Skills skills={data.skills} columns={data.n_skills_columns} />
</Card>
</div>
)}
</div>
);
};
这些 props 用于函数中,用于在渲染之前对 prop 数据进行操作,例如:
const Skills: FC<SkillsProps> = ({ skills, columns }): JSX.Element => {
const skillsTable = sliceArray(skills, columns);
return (
<div>
skillsTable.map(...)
</div>
);
};
在Skills 组件中,当我使用useEffect 挂钩控制台记录数据时,道具包含数据,但sliceArray() 抱怨它的参数是undefined。
我已经尝试过的:
const Skills: FC<SkillsProps> = ({ skills_, columns_ }): JSX.Element => {
const [skills, setSkills] = useState([]);
const [columns, setColumns] = useState(1);
useEffect(() => {
setSkills(skills_);
setColumns(columns_);
}, []);
const skillsTable = sliceArray(skills, columns);
我在这里错过了什么?
【问题讨论】:
-
skills和columns道具从何而来?如何将它们传递给Skills组件? -
我将父组件添加到问题中,以便您查看道具是如何传递的
-
useFetch是自定义钩子还是来自像react-query这样的库? -
这是一个自定义钩子,适用于其他组件
-
您确定
data始终是假的(例如undefined)还是带有skills和n_skills_columns键的对象?
标签: reactjs typescript