Я пытаюсь воспроизвести любое вхождение ссылки в тексте как ссылку, но я получаю его только для отображения <a href="example.com">example.com</a>
как текста в сообщении. (Для ясности, он показывает другое содержимое сообщения, если в сообщении есть другое содержимое, чем ссылка, но ссылка становится «связанной (как показано ниже)»)
Вот компонент сообщения.
import React from "react";
import moment from "moment";
import { Comment, Image } from "semantic-ui-react";
const isOwnMessage = (message, user) => {
return message.user.id === user.uid ? "message__self" : "";
};
const isImage = message => {
return message.hasOwnProperty("image");
};
const timeFromNow = timestamp => moment(timestamp).fromNow();
function linkify(text) {
var urlRegex =/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(urlRegex, function(url) {
return '<a href="' + url + '">' + url + '</a>';
});
}
const Message = ({ message, user }) => (
<Comment>
<Comment.Avatar src={message.user.avatar} />
<Comment.Content className={isOwnMessage(message, user)}>
<Comment.Author as="a">{message.user.name}</Comment.Author>
<Comment.Metadata>{timeFromNow(message.timestamp)}</Comment.Metadata>
{isImage(message) ? (
<Image src={message.image} className="message__image" />
) : (
<div>
<Comment.Text>{linkify(message.content)}</Comment.Text>
<React.Fragment dangerouslySetInnerHTML={linkify(message.content)}>
</React.Fragment>
</div>
)}
</Comment.Content>
</Comment>
);
export default Message;