Taro的nutui在写微信小程序时picker随页面滚动问题

划重点:picker不要写在form.item内

问题描述在表单想要使用可选择组件,nutui目测picker是最优选,但是以官网示例写在form.item中出现了以下问题,fixed相对于了父元素而不是视口,页面仍然可以滚动。

 左图为问题页面,右图为修改后的正确页面,放一起方便对比。

有问题的dom结构如下:

<Form.Item
    label="证件类型"
    name="cardType"
    trigger="onConfirm"
    getValueFromEvent={(...args) => args[1]}
    onClick={(event, ref) => {
        ref.open()
    }}
    rules={[{ required: true, message: "请选择证件类型" }]}
>
    <Picker options={[cardTypeOptions]}>
        {(value) => {
            return (
                <Cell
                    style={{
                        padding: 0,
                        '--nutui-cell-divider-border-bottom': '0',
                        background: 'transparent',
                    }}
                    className={value.length ? styles.cardType : styles.cardNoValue}
                    title={
                        value.length
                            ? cardTypeOptions.filter((po) => po.value === value[0])[0]
                                ?.text
                            : '请选择证件类型'
                    }
                    extra={<RectDown size={16} />}
                    align="center"
                />
            )
        }}
    </Picker>
</Form.Item>

修改后的dom结构如下:

<View style={{ position: 'relative' }}>
    <Form.Item
        label="证件类型"
        name="cardType"
        rules={[{ required: true, message: "请选择证件类型" }]}
        onClick={() => setCardTypeFlag(!cardTypeFlag)}
    >
        <Input placeholder="请选择证件类型" type="text" disabled />
    </Form.Item>
    <IconFont
        name="rect-down"
        size={14}
        color="#999999"
    />
</View>

{/* 证件类型 */}
<Picker
    visible={cardTypeFlag}
    options={cardTypeOptions}
    title="请选择证件类型"
    onConfirm={(list, values) => confirmPicker(list, values)}
    onClose={() => setCardTypeFlag(false)}
/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值