This is because by default React escapes HTML, in order to prevent XSS attacks. You can by pass this, by using the prop dangerouslySetInnerHTML, as described here.
However, as the name suggests, this leads to a vulnerability. I would suggest instead to use Mardown, especially the marked package.
You can write a general component like this one and then use it everywhere.
import React from 'react';
import marked from 'marked';
const Markdown = React.createClass({
render() {
const raw = marked(this.props.text, {sanitize: true});
return <span dangerouslySetInnerHTML={{__html: rawMarkup}} />;
}
});
In your case then
var columns = [
{ name = 'field' },
{ name = 'link', render : function(uri) { return <Markdown text={'[link](' + uri + ')'} />} },
];