显示路径中的降价文件与打字稿反应

Posted

技术标签:

【中文标题】显示路径中的降价文件与打字稿反应【英文标题】:Display markdown file from path in react with typescript 【发布时间】:2022-01-24 00:20:53 【问题描述】:

我正在尝试在我的 react/typescript 应用程序中创建一些到不同 .md 文件的路由。

我的 App.tsx 有这个:

<Router>
  <main>
    <nav className="navbar navbar-expand-md navbar-light bg-white sticky-top px-3">
      <button className="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span className="navbar-toggler-icon"></span>
      </button>
      <div className="collapse navbar-collapse flex-row-reverse" id="navbarSupportedContent">
        <ul className="navbar-nav mb-2 mb-lg-0">
          <li className="nav-item">
            <a className="nav-link active" href="/#About">About</a>
          </li>
          <li className="nav-item">
            <a className="nav-link active" href="/FirstDoc">FirstDoc</a>
          </li>
          <li className="nav-item">
            <a className="nav-link active" href="/SecondDoc">SecondDoc</a>
          </li>
         </ul>
       </div>
     </nav>
     <Routes>
       <Route path="/" element=<Home />></Route>
       <Route path="/FirstDoc" element=<FIFI />></Route>
       <Route path="/SecondDoc" element=<SESE />></Route>
     </Routes>

     <div className="row row-cols-sm-1 py-5 m-0 text-center">
       <hr className="my-4"/>
       <div className="col p-3">
         <p className="m-0">This is my footer</p>
       </div>
     </div>
   </main>
 </Router>

我正在从一个名为 MdFiles.tsx 的文件中导入 FirstDoc 和 SecondDoc,如下所示:

import React, FC from "react"
import ReactMarkdown from 'react-markdown'

const fifiDoc = "./docs/FirstDoc.md"
const seseDoc = "./docs/SecondDoc.md"

const FIFI: FC = () => 
  return(
    <ReactMarkdown children=fifiDoc />
  );


const SESE: FC = () => 
      
  return(
    <ReactMarkdown children=seseDoc />
  );


export FIFI, SESE;

我希望我的应用在路由容器内显示 de .md 内容,但当它运行时,它会按原样显示文档的路径

例如

带导航的标题

./docs/FirstDoc.md

页脚

带导航的标题

./docs/SecondDoc.md

页脚

因为将它们作为字符串。

我需要它来获取路径相关文件中的文本并显示它,我很想在创建 const fifiDocconst seseDoc 时写下所有内容,但是很长并且会更好从 .md 文件中导入它。

感谢您的帮助。

提前致谢

【问题讨论】:

【参考方案1】:

你可以试试这个代码:

const [text, setText] = useState('')
useEffect(()=>
const firstPath = require("./firstDoc.md");

  fetch(firstPath)
    .then(response => 
      return response.text()
    )
    .then(text => setText(text))
,[])

然后将此文本传递给带有 children 属性的组件。

<ReactMarkdown children=text />

<ReactMarkdown>text</ReactMarkdown>

看看这些article。玩转承诺和文件上传以做出反应。 我相信你会成功的。

【讨论】:

(not OP) 不知道为什么,但是在使用您的方法获取 firstPath 时出现代理错误,并且不想弄清楚原因(我的设置使用 react & express),所以我使用了@ 987654325@ 成功了。 为我服务,只是做了一些调整,在我的情况下,我必须在使用 fetch 时添加 .default

以上是关于显示路径中的降价文件与打字稿反应的主要内容,如果未能解决你的问题,请参考以下文章

使用打字稿创建自定义反应路由组件。类型上不存在属性“路径”... RouteProps

打字稿路径无法解析

找不到角度打字稿打字参考路径

如何在反应打字稿中从json文件中获取和显示数据

使用别名而不是相对路径创建的打字稿声明文件

打字稿无法解析导入中的非相对路径