Taro 封装Grid布局

HGrid

API

参数 说明 类型 默认值 必填
column 一行的个数 number -
rowGap 行间距 number -
column 列间距 number -
children 子组件 ReactNode -

完整代码

index.tsx

import { View } from "@tarojs/components"
import React, { ReactNode } from "react"

interface HGridProps {
    column: number, // 一行的个数
    rowGap?: number, // 行间距
    columnGap?: number, // 列间距
    children: ReactNode
}

const HGrid = (props: HGridProps) => {
    const {
        column,
        rowGap,
        columnGap,
        children
    } = props
    // 根据行内的个数进行累加
    const cumulative = () => {
        let res = ''
        for (let i = 0; i < column; i++) {
            res += '1fr '
        }
        return res.trimEnd()
    }
    return (
        <View
            style={{
                display: 'grid',
                gridTemplateColumns: `${cumulative()}`,
                rowGap: `${rowGap}px`,
                columnGap: `${columnGap}px`,
                width: '100%'
            }}
        >
            {
                React.Children.map(children, child => {
                    if ((child as any)?.type?.name !== 'HGridItem') {
                        console.warn('HGrid必须嵌套HGridItem组件')
                        return null
                    }
                    return child
                })
            }
        </View>
    )
}

export default HGrid

HGridItem

const HGridItem = ({children}) => {
    return(
        <>
            {children}
        </>
    )
}

export default HGridItem
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐