React再次渲染相同的div元素-对帐问题

任意的

在React文档中,我正在阅读关于和解的信息我想到了以下有趣的场景。

在我的示例中,代码使用一个button元素boolean在click事件上切换值。基于此,代码用三元运算符决定应React渲染哪个元素。

让我们用两个组件来代表我的示例:

const First = () => {
    return <div>element - no difference</div>
}

const Second = () => {
    return <div>element - no difference</div>
}

最后呈现的元素没有区别。

第一个例子

在第一个示例中具有FirstSecond功能组件如下:

const YourComponent = () => {
    const [renderFirst, setRenderFirst] = useState(true);

    return <>
        <button onClick={() => setRenderFirst(!renderFirst)}>Toggle</button>
        {renderFirst ? <First /> : <Second /> }
    </>
}

第二个例子

在第二个示例中,仅使用div元素但结果相同:

const Contact = () => {
    const [renderFirst, setRenderFirst] = useState(true);

    return <>
        <button onClick={() => setRenderFirst(!renderFirst)}>Toggle</button>
        {renderFirst ? <div>element - no difference</div> : <div>element - no difference</div> }
    </>
}

根据文档,我的理解是

每当根元素具有不同类型时,React都会拆开旧树并从头开始构建新树。

最后,无论哪种方式,渲染结果都将结束<div>element - no difference</div>第二个例子是不是再次呈现明显的DOM元素。

为什么React会渲染第一个示例呢?在这种情况下,是否认为这些类型不同?

谢谢!

克里斯

通过渲染,我假设您是指要“渲染”或也提交给DOM的更改在两个示例中,对帐过程仍将触发。

答案很简单。在您的第一个示例中,您将返回一个React组件<First /><Second />),而在第二个示例中,您将返回一个React元素(两个中div的一个)。

反应无法事先知道每个两种成分会做(他们可以有自己的逻辑),所以在后一种情况下,反应只会看到你要替换FirstSecond,只是重新渲染。在前一种情况下,您仅返回可以客观比较的元素

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果对帐单问题或运营商问题

来自分类Dev

React中的对帐详细说明

来自分类Dev

在定制的客户对帐单报告中汇总账龄问题

来自分类Dev

为什么React的DOM对帐无法按预期进行?

来自分类Dev

渲染作为元素传递的React元素时遇到问题

来自分类Dev

TFS 2015 vNext门控检查VS 2013 Update 3对帐问题

来自分类Dev

React 0.13.1渲染问题

来自分类Dev

React useMemo重新渲染问题

来自分类Dev

React-google-maps重新渲染问题

来自分类Dev

在React中渲染嵌套对象的问题

来自分类Dev

来自React的useState问题,太多的重新渲染

来自分类Dev

选择中的问题渲染项目(React js)

来自分类Dev

动态React元素创建的问题

来自分类Dev

再次播放代码问题

来自分类Dev

再次发现问题?

来自分类Dev

Tomcat再次编码问题

来自分类Dev

2秒后打印出对帐单

来自分类Dev

折叠帐户对帐单的地址字段

来自分类Dev

在MS Access中创建客户对帐单

来自分类Dev

在Safari / Firefox中表达SVG图片元素渲染问题

来自分类Dev

父Div元素内的图像居中问题

来自分类Dev

我的 div 元素位置有问题

来自分类Dev

React元素不渲染

来自分类Dev

我的图像元素和 React 的源问题

来自分类Dev

在带有useCallback和useMemo的React中重新渲染的问题

来自分类Dev

react组件状态下渲染数据的问题

来自分类Dev

React - LocalStorage & State - 按钮切换渲染问题

来自分类Dev

Android Studio的渲染问题

来自分类Dev

渲染问题-Android Studio