Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

436
Vistas
Resaltar texto usando ReactJS

Estoy tratando de resaltar el texto que coincide con la consulta, pero no puedo averiguar cómo hacer que las etiquetas se muestren como HTML en lugar de texto.

 var Component = React.createClass({ _highlightQuery: function(name, query) { var regex = new RegExp("(" + query + ")", "gi"); return name.replace(regex, "<strong>$1</strong>"); }, render: function() { var name = "Javascript"; var query = "java" return ( <div> <input type="checkbox" /> {this._highlightQuery(name, query)} </div> ); } });

Salida actual: script <strong>Java</strong>

Salida deseada: secuencia de comandos Java

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Aquí está mi método de ayuda simple de dos líneas:

 getHighlightedText(text, highlight) { // Split text on highlight term, include term itself into parts, ignore case const parts = text.split(new RegExp(`(${highlight})`, 'gi')); return <span>{parts.map(part => part.toLowerCase() === highlight.toLowerCase() ? <b>{part}</b> : part)}</span>; }

Devuelve un lapso, donde las partes solicitadas se resaltan con las etiquetas <b> </b> . Esto se puede modificar simplemente para usar otra etiqueta si es necesario.

ACTUALIZACIÓN: para evitar la advertencia de falta de clave única, aquí hay una solución basada en lapsos y la configuración del estilo fontWeight para las partes coincidentes:

 getHighlightedText(text, highlight) { // Split on highlight term and include term into parts, ignore case const parts = text.split(new RegExp(`(${highlight})`, 'gi')); return <span> { parts.map((part, i) => <span key={i} style={part.toLowerCase() === highlight.toLowerCase() ? { fontWeight: 'bold' } : {} }> { part } </span>) } </span>; }
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay un ejemplo de un componente de reacción que usa la etiqueta estándar <mark> para resaltar un texto:

 const Highlighted = ({text = '', highlight = ''}) => { if (!highlight.trim()) { return <span>{text}</span> } const regex = new RegExp(`(${_.escapeRegExp(highlight)})`, 'gi') const parts = text.split(regex) return ( <span> {parts.filter(part => part).map((part, i) => ( regex.test(part) ? <mark key={i}>{part}</mark> : <span key={i}>{part}</span> ))} </span> ) }

Y aquí está cómo usarlo

 <Highlighted text="the quick brown fox jumps over the lazy dog" highlight="fox"/>
over 4 years ago · Santiago Trujillo Denunciar

0

Ya hay un componente de reacción en NPM para hacer lo que quieras:

 var Highlight = require('react-highlighter'); [...] <Highlight search={regex}>{name}</Highlight>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda