javascript - React.js - 有条件地使用 dangerouslySetInnerHTML

标签 javascript reactjs

我有一些代码可以对一些文本进行正则表达式并将其包装在 <span /> 中像这样:

highlightQuery() {
    // will output the text response from the Model, but also highlight relevant words if they match the search query
    // that the user input
    let input = this.props.model.get('value');

    if(!this.state.hasMatch){
        return input;
    }

    let query = this.props.matched.query,
        index = this.props.model.get('searchIndexes')[this.props.matched.index];

    const replaceBetween = (str, start, end, what) => {
        return str.substring(0, start) + what + str.substring(start + end);
    };

    let ret = replaceBetween(input, index, query.length, `<span class='highlighted'>${query}</span>`);

    return ret;
},

render() {

    const classes = classNames(
        this.props.model.get('type'),
        'character'
    );

    return (
        <span key={this.props.model.cid} className={classes} dangerouslySetInnerHTML={ {__html: this.highlightQuery()} }>
            {!this.state.hasMatch && this.highlightQuery()}
        </span>
    );
}

但是,这会产生:Uncaught Error: Invariant Violation: Can only set one of children or props.dangerouslySetInnerHTML.

我如何最好地有条件地使用 dangerouslySetInnerHTML

最佳答案

并确保您没有在 span 标签之间包含空格,否则您会遇到以下错误:

invariant.js:39 Uncaught Invariant Violation: Can only set one of children or props.dangerouslySetInnerHTML.

return = <span key={this.props.model.cid} className={classes} dangerouslySetInnerHTML={ {__html: this.highlightQuery()} }>NO SPACE OR TEXT HERE</span>

关于javascript - React.js - 有条件地使用 dangerouslySetInnerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31835778/

相关文章:

javascript - 将 HTML 字符串转换为 Jquery,进行操作并转换回字符串

javascript - 如何使用 React 创建多页面应用程序?

javascript - ASP.NET 按钮上的 touchstart touch end 未读取事件

javascript - 返回 map 内的嵌套 View

javascript - react 我正在马尔丁,因为 "Cannot read property ' map '未定义”

javascript - Redux action 和 async/await 函数在类组件和函数中具有不同的行为

javascript - JavaScript 对象中不同函数声明之间的区别(如果有的话)是什么?

javascript - Laravel 按排序返回数据

reactjs - 为什么 React - 组件在从服务器获取 img src 路径之前加载?

javascript - 使用从 react 组件中的函数返回的值(自动更新)