【发布时间】:2021-04-22 20:39:36
【问题描述】:
代码如下:
const Gauge = (props) => {
const points = 100;
const radius = 257;
const max = 100;
const peaks = [ 10, 50, 90 ];
const step = (max + 1) / points;
const realPeaks = peaks.map((peak) => Math.floor(peak * (1 / step)));
const hueStep = 120 / points;
const digitContainer = useRef(null);
const innerContainer = useRef(null);
const [digits, setDigits] = useState(props.item.temperature);
useEffect(() => {
digitContainer.current.append(`<span class="digit current-digit count">0</span>`);
for (let i = 0; i < points; i++) {
const degree = i * (radius / (points - 1)) - radius / 2;
const isPeak = realPeaks.indexOf(i) > -1;
innerContainer.current.append(`<i className="bar${isPeak ? ' peak' : ''}" style="transform: rotate(${degree}deg)"></i>`);
const intStep = Math.ceil(step * i);
const intNextStep = Math.ceil(step * (i + 1));
}
console.log(digitContainer.current);
}, []);
return (
<div className={style['gauge']} data-digit={digits}>
<div ref={digitContainer}></div>
<div ref={innerContainer}></div>
</div>
);
};
我在这里要做的是将字符串 <span class="digit current-digit count">0</span> 呈现为 html 代码。因为当我尝试控制 digitContainer.current 时,值是字符串而不是 html。
输出是这样的:
<div className="gauge data-digit{digits}">
<div>
'<span class="digit current-digit count">0</span>'
</div>
<div>
'<span>......</span>'
'<span>......</span>'
'<span>......</span>'
'<span>......</span>'
'<span>......</span>'
'<span>......</span>'
'<span>......</span>'
</div>
</div>
改为
<div className="gauge data-digit{digits}>
<div>
<span class="digit current-digit count">0</span>
</div>
<div>
<span>......</span>
<span>......</span>
<span>......</span>
<span>......</span>
<span>......</span>
<span>......</span>
<span>......</span>
</div>
</div>
【问题讨论】:
-
您为什么要这样做,而不是首先将
span包含在div中?
标签: reactjs typescript rxjs next.js