javascript - React 功能组件 - 说它不是功能
问题描述
我正在使用反应功能组件(事实上的学习钩子),所以在另一个函数中调用一个函数时我面临一个问题
这是我的代码
我的功能组件
const LiteraryPage = props => {
if (Object.keys(mainData).length === 0 && mainData.constructor === Object) {
setMainDataSection(validateData(mainData));
}
const validateData = async (data) => {
let finalDataArray = [];
if (data.cars !== undefined) {
finalDataArray = finalDataArray.concat(data.cars);
}
if (data.mobiles !== undefined) {
finalDataArray = finalDataArray.concat(data.mobiles);
}
if (data.scooters !== undefined) {
finalDataArray = finalDataArray.concat(data.scooters);
}
return finalDataArray;
};
}
但我得到一个错误
未捕获的 TypeError:validateData 不是函数
如果遗漏了什么或者在某个地方有错,请纠正我。
解决方案
当您调用 validate data 和 setMainDataSection 时,您可能直接在功能组件内设置状态。
因此,首先您需要在使用它之前定义 validateData,其次,您需要在 useEffect 中执行检查
const LiteraryPage = props => {
const validateData = async (data) => {
let finalDataArray = [];
if (data.cars !== undefined) {
finalDataArray = finalDataArray.concat(data.cars);
}
if (data.mobiles !== undefined) {
finalDataArray = finalDataArray.concat(data.mobiles);
}
if (data.scooters !== undefined) {
finalDataArray = finalDataArray.concat(data.scooters);
}
return finalDataArray;
};
useEffect(() => {
if (Object.keys(mainData).length === 0 && mainData.constructor === Object) {
setMainDataSection(validateData(mainData));
}
}, []);
}
推荐阅读
- css - React Material UI Box 文本超出了 div
- java - 基于JAVA8的应用程序上GC分配失败的解决方案
- azure-devops - 邀请(外部)人员参加他们的第一个项目时,Azure DevOps 不发送邀请邮件
- reactjs - 如何在 MDB 数据表 React js 中添加下载功能
- c - C文件优化
- autofac - 使用 autofac 根据上下文将构造函数值传递给相同的实现参数
- c - 存在 unicode 字符时的 %s 最小字段宽度
- go - 无法导入 gorilla/mux(github.com/gorilla/mux@v1.7.4:在 go.mod 中明确要求,但在 vendor/modules.txt 中未标记为明确)
- android - 从分配给变量的获取中获取返回的值
- android - Android - UsageStats getTotalTimeInForeground 不更新当前前台应用程序