增强您的React UI并使用来自Markdown文件的帮助工具提示
增强您的React UI并使用来自Markdown文件的帮助工具提示
(opens new window) (opens new window)
本文的目标是描述如何在React应用程序中使用Markdown文件来呈现上下文帮助。
为此,我们将使用yarn add
或npm install
安装以下库:
yarn add react-tooltipyarn add react-markdown
功能组件
我们创建一个返回_Tooltip_的功能组件,其内容将使用_ReactMarkdown_组件加载:
/* eslint-disable import/no-extraneous-dependencies */
import React from 'react';
import ReactMarkdown from 'react-markdown';
import Tooltip from 'react-tooltip';
const HelpTooltip = ({ markdownContent }) => (
<Tooltip
html
place="right"
type="dark"
effect="solid"
multiline
delayShow={500}
className="help-tooltip"
getContent={() => <ReactMarkdown source={markdownContent} />}
>
<span className="help-icon">?</span>
</Tooltip>
);
export default HelpTooltip;
``` rom 'react' import { useEffect, useState } from 'react';import PropTypes from 'prop-types';import { Tooltip } from 'react-tooltip';import ReactMarkdown from 'react-markdown';export const HelpComponent = ({ id, markdownFilename, place }) => { const [content, setContent] = useState(''); useEffect(() => { fetch(markdownFilename) .then((res) => res.text()) .then((text) => { setContent(text); }); }); return ( <Tooltip id={id} effect='solid' place={place} border> <ReactMarkdown>{content}</ReactMarkdown> </Tooltip> );};HelpComponent.propTypes = { id: PropTypes.string.isRequired, markdownFilename: PropTypes.string.isRequired, place: PropTypes.string,};HelpComponent.defaultProps = { place: 'bottom',};
ReactMarkdown
组件允许使用Markdown格式的文本,但不支持外部文件。
在useEffect
钩子中,我们使用markdownFilename
参数指定的文件路径加载文件的内容,使用fetch
函数进行异步请求,然后将其转换为文本格式,并将结果设置为content
的状态。
最后,我们在返回的组件中使用Tooltip
组件来显示content
的内容。Tooltip
组件接受id
、effect
、place
和border
属性作为参数,并将content
包裹在ReactMarkdown
组件中显示。 将以下Markdown翻译成中文并删除一级标题: etch** 函数。一旦获取内容,我们将设置在状态中以在 ReactMarkdown 组件中加载为 child。
默认情况下,工具提示将显示在引用 HelpComponent 的元素下方,使用 data-tooltip-id 属性。
示例 #
在下面的示例中,我们在 public/markdown 文件夹中创建一个名为 help_phase_trend.md 的文件。
### 趋势阶段-**看涨** ![Bullish](https://images.ctfassets.net/rfiw1fhbprqn/2jCB8KMJSab05bxxiI1iss/37f71b0aa5105cab1cf196c7641cba1c/fasealcistam.svg)。毫无疑问,中长期趋势是看涨的。A...