记录layui日期组件laydate闪屏的坑

记录layui日期组件laydate闪屏的坑


在用layui框架构建前端页面的时候不知道各位是否遇到过这种坑,就是在使用layui.laydate组件时会出现闪屏的问题,不过百度一下子就解决了,随便记录一下。

 <!--页面-->
  <input type="text" id="test1" name="filDate" class="layui-input" placeholder="yyyy-MM-dd">
  
  <!--js-->
  layui.use(['element','layedit','laydate'],function(){
      var form=layui.form
      ,layer=layui.layer
      ,layedit=layui.layedit
      ,layedit=layui.layedit
      ,laydate=layui.laydate;

      laydate.render({
        elem:'#test1'
      });
      });

以上这段代码在页面向下高度不够打开一个日期弹框是会出现闪屏现象的

接下来我们看看下面这个代码

<!--页面-->
  <input type="text" id="test2" name="filDate" class="layui-input test-item" placeholder="yyyy-MM-dd">
   <!--注意:class必须添加 test-item样式,这是重点,具体去看layui文档-->
    <!--js-->
  layui.use(['element','layedit','laydate'],function(){
      var form=layui.form
      ,layer=layui.layer
      ,layedit=layui.layedit
      ,layedit=layui.layedit
      ,laydate=layui.laydate;

      laydate.render({
        elem:'#test1'
        ,trigger:'click'
      });
      });

当我们加上trigger:'click’这个元素之后日期控件就不会出现闪屏的现象了

注意:会照成闪屏的原因是因为页面向下高度不够打开一个日期弹框,当你页面高度足够时就不需要写trigger:‘click’;这个元素,就上下合适位置打开日期弹框。防止页面缩小被查看,建议都写。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个问题可能是由于 Dialog 组件中的 TextField 组件的焦点问题导致的。你可以尝试在 Dialog 组件中的 TextField 上添加 autoFocus 属性来解决这个问题,例如: ```jsx <Dialog open={open}> <DialogTitle>Enter your name</DialogTitle> <DialogContent> <TextField autoFocus margin="dense" label="Name" type="text" /> </DialogContent> <DialogActions> <Button onClick={handleClose}>Cancel</Button> <Button onClick={handleSave}>Save</Button> </DialogActions> </Dialog> ``` 如果这个方法不起作用,你可以尝试使用 useLayoutEffect 钩子来延迟渲染 TextField 组件。例如: ```jsx import React, { useState, useLayoutEffect } from 'react'; import { Dialog, DialogTitle, DialogContent, TextField, DialogActions, Button } from '@material-ui/core'; function MyDialog() { const [open, setOpen] = useState(false); useLayoutEffect(() => { if (open) { document.querySelector('.MuiDialog-root .MuiInputBase-input').focus(); } }, [open]); const handleOpen = () => { setOpen(true); }; const handleClose = () => { setOpen(false); }; const handleSave = () => { // your save logic setOpen(false); }; return ( <> <Button onClick={handleOpen}>Open Dialog</Button> <Dialog open={open}> <DialogTitle>Enter your name</DialogTitle> <DialogContent> <TextField margin="dense" label="Name" type="text" /> </DialogContent> <DialogActions> <Button onClick={handleClose}>Cancel</Button> <Button onClick={handleSave}>Save</Button> </DialogActions> </Dialog> </> ); } ``` 这将在 Dialog 组件打开时使用 DOM API 来获取 TextField 组件并将焦点设置在输入框上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值