Tengo un gráfico de dispersión en algunos datos que defino así:
svg.append('g') .attr('transform', `translate(${margin.left},0)`) .call(yAxis); g .selectAll('.scatter') .data(data) .join('circle') .attr('class', 'scatter') .attr('cx', (d) => xScale(dx)) .attr('cy', (d) => yScale(dy)) .attr('r', 3) .attr('stroke', 'gray') .attr('stroke-width', 0.5) .style('fill', (d) => colorScale(d.label as number)) .style('fill-opacity', (d) => { // Get data value console.log("Filter is {}", filter); if (filter === 'umap') { return 0.2; } else { return 0.8; } });Paso la cadena de filtro como accesorio y se actualiza correctamente. Sin embargo, d3.js no cambia su opacidad. Entonces, console.log generaría una cadena que no es igual a umap. Pero la sentencia if entra como si la condición fuera verdadera.
¿Alguien puede señalar por qué? ¿Es esto algún mecanografiado/javascript que no entiendo correctamente?
Todo esto se llama dentro de un gancho de reacción.
¡Muchas gracias por adelantado! Todavía soy un principiante.
Entonces, la respuesta a este problema fue que tenía el gancho de reacción solo confiando en la variable de datos. Cambiando esto también para que tenga efectos en la variable de filtro trabajada.