Переменные, которые я установил (bgColor, txtColor), не всегда попадают в styled-jsx. Я приложил снимок экрана, на котором вы видите, что console.log не показывает те же значения, которые отображаются.
Я полагаю, что в styleled-jsx есть что-то, чего я не получаю. Не уверен, почему это не работает.
const Badge = (props) => {
const { variation = null, size = null } = props;
let bgColor = "#eeeeee";
let txtColor = "#000000";
switch (variation) {
case "red":
bgColor = "#FADBD8";
txtColor = "red";
break;
case "green":
bgColor = "#D5F5E3";
txtColor = "green";
break;
}
/* Test to see what our values are */
console.log(`props.children=${props.children}, bgColor=${bgColor}, txtColor=${txtColor}`)
return (
<span className="badge">
{props.children}
{/* My colors and text in the CSS do not match the vars printed to cosole above */}
<style jsx>{`
.badge {
text-transform: capitalize;
display: inline-block;
padding: 0.2rem 0.4rem;
border-radius: 3px;
background-color: ${bgColor};
color: ${txtColor};
}
`}</style>
</span>
);
};
Вот пример глупого рендеринга компонента ...
Обновление Копали глубже. Похоже, иногда он назначает один и тот же сгенерированный стиль JSX элементам, которые должны быть разных цветов. Любые мысли о том, почему он назначил бы ему тот же класс? (img прилагается)