class A extends React.Component {
renderText() {
let parts = this.props.text.split(re) // re is a matching regular expression
for (let i = 1; i < parts.length; i += 2) {
parts[i] = <a key={'link' + i} href={parts[i]}>{parts[i]}</a>
}
return parts
}
render() {
let text = this.renderText()
return (
<div className="some_text_class">{text}</div>
)
}
}
<Linkify>
<div>react-linkify <span>(tasti.github.io/react-linkify/)</span></div>
<div>React component to parse links (urls, emails, etc.) in text into clickable links</div>
See examples at tasti.github.io/react-linkify/.
<footer>Contact: tasti@zakarie.com</footer>
</Linkify>
<Hyperlink linkDefault={ true }>
<Text style={ { fontSize: 15 } }>
This text will be parsed to check for clickable strings like https://github.com/obipawan/hyperlink and made clickable.
</Text>
</Hyperlink>
<Hyperlink onLongPress={ (url, text) => alert(url + ", " + text) }>
<Text style={ { fontSize: 15 } }>
This text will be parsed to check for clickable strings like https://github.com/obipawan/hyperlink and made clickable for long click.
</Text>
</Hyperlink>
<Hyperlink
linkDefault
injectViewProps={ url => ({
testID: url === 'http://link.com' ? 'id1' : 'id2' ,
style: url === 'https://link.com' ? { color: 'red' } : { color: 'blue' },
//any other props you wish to pass to the component
}) }
>
<Text>You can pass props to clickable components matched by url.
<Text>This url looks red https://link.com
</Text> and this url looks blue https://link2.com </Text>
</Hyperlink>
9条答案
按热度按时间5vf7fwbs1#
好吧,我是这么做的。
ymzxtsji2#
我对这里的每一个答案都有疑问,所以我不得不自己写:
gfttwv5a3#
有NPM模块可以处理这个问题。
第一次(第一次)
在撰写本文时,当前版本是1.0.0-alpha。它需要React 16。repo有14个开放票证和17个开放PR。所以这并不好。
版本0.2.2允许更早的版本,但没有链接文本装饰等。
第一个e五个f一x(第一个e六个f一x)
如果你使用的是原生应用(即手机应用),它看起来是两个选项中较好的一个。代码示例:
参考文献
gmxoilav4#
试试这个库,它完全符合您的需要:https://www.npmjs.com/package/react-process-string
下面是一个例子:
这将替换带有或不带有“http://”协议的所有链接。如果只想替换带有协议的链接,请从配置数组中删除第二个对象。
dba5bblo5#
首先将
<a>
标记添加到字符串:然后在react中将字符串呈现为html:
ego6inou6#
我写了一个简短的函数来完成它:
bhmjp9jg7#
迟到了,但这里有一个稍微修改的版本:
有趣的事情要注意:
希望这能有所帮助。
bpzcxfmw8#
根据OP自己的回答,我想出了一句俏皮话:
siv3szwd9#
对我来说,我是这样解决的
我正在使用带有React的材质UI