程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用反应钩子将附加字符串呈现为 html大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用反应钩子将附加字符串呈现为 html?

开发过程中遇到如何使用反应钩子将附加字符串呈现为 html的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用反应钩子将附加字符串呈现为 html的解决方法建议,希望对你解决如何使用反应钩子将附加字符串呈现为 html有所启发或帮助;

代码如下:

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>

解决方法

根据您的 previous question,我将假设它不仅仅是 span

您根本不会为此使用 useEffect。相反,您可能会使用一个数组,然后最后在 JSX 中使用该数组:

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;

    // Build the array
    const digits = [];
    for (let i = 0; i < points; i++) {
        const degree = i * (radius / (points - 1)) - radius / 2;
        const isPeak = realPeaks.indexOf(i) > -1;
        digits.push(<i key={i} className={`bar${isPeak ? ' peak' : ''}`} style={{transform: `rotate(${degree}deg)`}}/>);
    }

    // Use it below
    return (
        <div>
            <div>
            <span key="count" class="digit current-digit count">0</span>
            {digits}
            </div>
        </div>
    );
};

我猜您的下一步是处理这些元素。如果是这样,您可能希望在状态信息中有一个数组,其中包含数组中每个 i 的信息,并根据该数组的当前状态进行渲染。在这种情况下,您可能(再次)让数组处于状态,然后在渲染时使用 map

const Gauge = (props) => {
    const points = 100;
    const radius = 257;
    const max = 100;
    const peaks = [ 10,90 ];
    const step = (max + 1) / points;
    const realPeaks = peaks.map((peak) => Math.floor(peak * (1 / step)));
    const hueStep = 120 / points;
    const [digits,setDigits] = useState([]);

    // ...things here to fill in `digits` via `setDigits` in response to
    // various things (perhaps an initial `useEffect` if loading them
    // from somewhere)...

    // Use it below
    return (
        <div>
            <div>
            <span key="count" class="digit current-digit count">{digits.length}</span>
            {digits.map(digit => <i key={digit.someUsefulKey} className={`bar${digit.isPeak ? " peak" : ""}`} style={{transform: `rotate(${degree}deg)`}}/>)}
            </div>
        </div>
    );
};

这里的关键是:不要在 HTML/标记中思考。从状态信息的角度考虑,然后根据需要渲染状态信息。


注意我在上面的 key 元素中添加的 i 属性。有关 key 属性的更多信息,请参阅 this page in the documentation。如果您可以使用比索引更有机的东西,那将是最好的,但我没有看到可以用于此目的的任何内容。

,

您可以使用 dangerouslySetInnerHTML 来呈现 innerHTML

const innerHTML = '<span class="digit current-digit count">0</span>'
function MyComponent() {
  return <div dangerouslySetInnerHTML={innerHTML} />;
}

大佬总结

以上是大佬教程为你收集整理的如何使用反应钩子将附加字符串呈现为 html全部内容,希望文章能够帮你解决如何使用反应钩子将附加字符串呈现为 html所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: