В общем, поступил так, взял готовое решение
для Mardown React.
Код для вставки:
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { Link } from 'react-router-dom';
import Markdown from 'react-markdown';
import { getPaymentURLByType } from 'utils/URLsCollections';
function RouterLink(text) {
return (
text.href.match(/^(https?:)?\/\//)
? <a href={text.href}>{text.children}</a>
: <Link to={getPaymentURLByType(text.href)}>{text.children}</Link>
);
}
class ParagraphComponent extends PureComponent {
static propTypes = {
caption: PropTypes.string,
text: PropTypes.string,
};
static defaultProps = {
caption: '',
text: '',
};
render() {
const { caption, text } = this.props;
return (
<div data-block>
<h3>{caption}</h3>
<Markdown
source={text}
renderers={{ link: RouterLink }}
/>
</div>
);
}
}
export default ParagraphComponent;
Решение взято на время, т.к. не пойму, как используя такое решение
text.replace(/\[(.*?)\]\((.*?)\)/gi, `${<Link to={getPaymentURLByType('$2')}>{'$1'}</Link>}`)
Заменить в тексте [object Object] из-за того что использую template literal.