Javascript “反应”;“价值”;如果设置为0,则道具未到达DOM
我有一个React组件,它呈现一个由引导设置样式的Javascript “反应”;“价值”;如果设置为0,则道具未到达DOM,javascript,reactjs,Javascript,Reactjs,我有一个React组件,它呈现一个由引导设置样式的元素。元素使用两个道具,value和max,并使用它们绘制进度条。它大部分时间都很有效。但是,当value=0时,value道具本身不会出现在DOM中。这会导致组件显示为一个“脉冲”的进度条(即,它的进度条部分永远从左向右滚动) 也就是说,Reactrender方法返回以下代码: 0/255 但这就是到达实际DOM的原因: 0/255 这是什么原因?它在所有其他情况下(即0
元素。
元素使用两个道具,value
和max
,并使用它们绘制进度条。它大部分时间都很有效。但是,当value=0
时,value
道具本身不会出现在DOM中。这会导致组件显示为一个“脉冲”的进度条(即,它的进度条部分永远从左向右滚动)
也就是说,Reactrender
方法返回以下代码:
0/255
但这就是到达实际DOM的原因:
0/255
这是什么原因?它在所有其他情况下(即0value=0
时,如何使其正确渲染
编辑:render()
函数如下:
var barColor = "info";
if (row.fraction <= 0.25)
barColor = "danger";
else if (row.fraction <= 0.50)
barColor = "warning";
return (
<div>
<Col md={10}>
<progress className={"progress progress-" + barColor} value={row.quantity} max={row.total}>
{row.quantity + "/" + row.total}
</progress>
</Col>
<Col md={2}>
<span style={{fontSize: "12px"}}>{row.quantity + "/" + row.total}</span>
</Col>
</div>
);
var barColor=“info”;
如果(row.fraction找到了(hacky?)解决方案
不知何故,React.createElement
没有将值0传递给这个特定的html组件。表示该值必须是一个浮点数。因此,转换为两个十进制数使值0.00
正确传递
尝试将代码更改为:
它应该会起作用。你能发布你的渲染方法吗?@mrlew我在编辑中添加了它。在没有查看完整源代码的情况下,唯一想到的是,行的数量是未定义的
或空的
,这会导致值属性没有被渲染。你能控制台.log
它来检查值是否正确吗真的是零吗?@mrlew我也这么认为,但是console.log
将数量显示为0。即使我将value={0}
放在其中,也会发生同样的事情。这似乎是React或Javascript的某种优化。可能会将值转换为字符串?{value.toString()}
太棒了,成功了!我尝试了0.0
,但我想我需要额外的精度。谢谢!我也写了这篇文章,我发现这种行为是一种。而且显然已经被修复了。哇,就在13天前。谢谢提醒!