学数学的程序猿
数学 / 前端开发 / 算法About me
React里的Fragment和空标签
前端
2023-02-15 16:01:00

React.Fragment代替div作为外层,可做不可见的包裹元素。定义组件的时,return返回需要唯一根元素,所以经常会写一个div来包裹,但如果不想渲染这个div,减少dom渲染,就可以引用Fragment组件。

<React.Fragment>
    ...
</React.Fragment>

类似于vue里的template:

<template>
    ...
</template>

使用场景举例

let tags = ['tag1', 'tag2', 'tag3']
return (
    <div className="App">
        {
            tags.map((tag: string, index: number) => {
                return <React.Fragment key={index}>
                    <div>{tag}</div>
                    <div> / </div>
                </React.Fragment>
            })
        }
    </div>
);

说明:
当循环渲染一个列表时,每次循环想创建两个div,但在这两个div中间又不想再包裹一个父div,则可以用这种方式,渲染之后的效果是这样的:

<div>tag1</div>
<div> / </div>
<div>tag2</div>
<div> / </div>
<div>tag1</div>
<div> / </div>
<div>tag3</div>
<div> / </div>

<></>也能渲染出这种效果,但是<></>不能添加属性,比如数组列表中需要给每一项添加唯一标识key,用<></>则不可以。