【发布时间】:2020-04-15 21:28:39
【问题描述】:
我创建了我的第一个 React 应用程序,它接收用户通过表单提交的数据并根据他们输入的数据编写消息。我已经使用带有钩子的 React 来做到这一点,并希望继续使用钩子。
以下是我的组件的精简版。我想通过提取 getDate 函数并将其移动到单独的 js 文件中来改进模块化。这将允许我在其他地方重用它。您能否根据我下面的精简代码建议如何做到这一点?
NLG.js(单个组件中的所有代码)
import React from 'react';
import {isYesterday, format} from 'date-fns';
const NLG = ({ watchAll }) => {
const allAnswers = JSON.parse(watchAll);
/*Convert date to language*/
const getDate = (date) => {
if (isYesterday(date) === true) {
return 'yesterday';
}
else {
return 'on ' + format(date, 'EEEE');
}
};
return (
<p>
{getDate(Date.parse(allAnswers['dateUpdateFailed']))}
</p>
);
};
export default NLG;
我尝试创建一个名为 GetDate 的新组件,它包含我的 getDate 函数,但在功能组件的结构中。它接受一个日期属性,然后我在我的 NLG 组件中使用 GetDate 组件。但是我收到了以下错误:“引发了跨域错误。React 无法访问开发中的实际错误对象。” 我没有在这里包含我失败的尝试作为这使问题变得非常冗长。
到目前为止,我不需要在我的应用程序中以正常方式使用状态,因为它内置在我正在使用的 React Hook Form 中。但我怀疑现在是我需要学习如何使用它的时候了?!有人可以建议如何执行上述操作吗?非常感谢:)
凯蒂
【问题讨论】:
-
我真的不明白为什么不把它作为一个简单的函数从外部 js 文件中导出
-
感谢 GalAbra - 好点。我也尝试过,但由于某种原因,我收到错误“getDate is not defined”。但是我开始怀疑这是否不是具有外部功能的问题,而是我使用它的方式。在我的真实代码中,我有一个 json 文件,其中包含我的 getDate 函数作为数组中的值:“getDate(Date.parse(allAnswers['dateUpdateFailed']))” 我正在使用 json.array 遍历数组中的每个项目。地图((n)=>评估(n))。当函数在我的主要组件中但如果它是 js 文件中的简单函数时,这是否有效?
标签: reactjs react-hooks modularity