首页 > 解决方案 > 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 不是函数

如果遗漏了什么或者在某个地方有错,请纠正我。

标签: javascriptreactjsreact-functional-component

解决方案


当您调用 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));
    }
  }, []);

}

推荐阅读