javascript - React 函数式组件 - 说它不是一个函数

标签 javascript reactjs react-functional-component

我正在使用React函数组件(实际上是学习钩子(Hook)),所以我在另一个函数中调用一个函数时遇到一个问题

这是我的代码

我的功能组件

    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;
  };

 
    }

但出现错误

未捕获类型错误:validateData 不是函数

如果有遗漏或有错误的地方,请纠正我。

最佳答案

当您调用验证数据和 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));
    }
  }, []);

}

关于javascript - React 函数式组件 - 说它不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61074390/

相关文章:

reactjs - 为什么在react的 "useState"钩子(Hook)中一遍又一遍地设置初始状态

reactjs - 如何在 React JS 中将 const 的值从一个 .js 文件传递​​到另一个文件?

javascript - 在 react-native-tab-view 中创建路由时出现不变冲突

javascript - 如何使用 jQuery 实现独有的切换按钮?

javascript - ReactJS 简单的登录表单

javascript - react 最终形式至少一个必填字段

javascript - 将 react 中的所有状态和 Prop 传递给 child

javascript - 单击 A 链接并打开多个转到不同 URL 的新窗口?

javascript - 上传到 heroku 后,移动 @media 查询不起作用

javascript - 如何将 setTimeout 与 Loader 一起使用