【问题标题】:Can Someone help me to convert typescript code to React Code有人可以帮我将打字稿代码转换为反应代码吗
【发布时间】:2021-01-08 10:57:51
【问题描述】:

有一个名为 react-data-grid 的包。在该特定包上有一个示例table,但代码在 TypeScript 中,并且该特定版本的文档也不存在。我试图将打字稿转换为 React。一切都很好,直到我想实现拖放。出现了一些错误,我认为该错误是因为我以错误的方式导入了某些内容。你能告诉我我哪里做错了吗? 这是Sandbox link。 我的本地构建中的错误出现在第 44 行的 RowRender.js 上。 我还在那里包含了打字稿文件。 如果您只是在sandbox 中取消注释 App.js 组件的第 72-74 行,您也可以看到错误。

【问题讨论】:

  • 你能分享错误信息吗?谢谢
  • 第 44 行的错误是 RowRenderer.js。它说 TypeError: Object(...) is not a function

标签: reactjs typescript react-dnd react-data-grid


【解决方案1】:
  • 将 .ts 文件重命名为 .tsx 文件。在另一种情况下,TypeScript 将无法理解 <div> <Row> 和其他反应元素
  • 将您关于 react-data-grid 的导入更新为:import { Row, RowRendererProps } from "react-data-grid";
  • 更新您的导入 import { useCombinedRefs } from ... 以从正确的位置获取挂钩。
  • 如果您将看到有关 React 默认导入的错误 - 将 import React from 'react' 更改为 import * as React from "react"; 或更新 tsconfig 以支持 synthetic imports

useCombinedRefs - 是内部函数,没有导出,所以不能直接使用。选项 #1 - 自己编写。选项 #2 找到您尝试使用内部函数的原因。应该是更好的方法。

function useCombinedRefs(...refs) {
  return useCallback(handle => {
    for (const ref of refs) {
      if (typeof ref === 'function') {
        ref(handle);
      } else if (ref !== null) {
        ref.current = handle;
      }
    }
  }, refs);
}

【讨论】:

  • 感谢您的帮助,但问题仍然存在。我只提供了打字稿文件,因为我正在将代码转换为 React。它不包含在代码中(即仅供参考)。我没有在反应代码中的任何地方使用 RowRenderedProps 。而且我不明白他们从哪里导出 useCombinedRefs 。所以我想我正在进口它们。您能否提供准确的 useCombinedRefs 导入声明。
  • 你之前把useCombinedRefs带到哪里去了?
  • 我正在从使用相同包的打字稿文件转换。他们在那里使用了导入(import { useCombinedRefs } from '../../../../src/hooks';)(参见沙盒中的 rowRendere.tsx)。我如何导入它。 Vs code 没有给出推荐。
  • 这应该可以工作import { useCombinedRefs } from 'react-data-grid/lib/hooks';
  • 嘿。谢谢您的帮助。原来当我使用这个内部函数时,代码正在工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多