Tengo una función en reaccionar donde quiero hacer:
renderPost(data) { const dateStr = new Date(data.pub_date).toLocaleString(); const img='empty' if (data.header_image_url.url!=null) { const img=data.header_image_url.url} else { const img="/app/frontend/img.png"} return ( <div className="card mb-4"> <Link to={`/post/${data.id}`}> <img src={img} className="card-img-top" alt=""/> </Link>Pero no funciona como python: la const img dentro de {} en las declaraciones if y else no tiene efecto y no anula mi declaración de variable const anterior.
Cómo puedo hacer eso ?
Tienes dos problemas aquí.
No puede cambiar el valor de una const . ¡Ese es el objetivo de const s! Si quieres cambiarlo, usa let .
Declarar una variable en un ámbito diferente sombrea la variable en el ámbito más amplio. No lo sobrescribe. No uses const (o let ) dentro del bloque.
Hay una escuela de pensamiento que dice que debe evitar sobrescribir variables en favor de estructuras de código donde se asignan en un solo lugar. Esto puede hacer que el código sea más legible.
En este caso, cada rama del if no hace nada más que realizar una asignación al mismo lugar.
Este es el lugar ideal para usar un operador condicional .
const img = data.header_image_url.url != null ? data.header_image_url.url : "/app/frontend/img.png";… o un operador coalescente nulo :
const img = data.header_image_url.url ?? "/app/frontend/img.png";