【antd Col】奇怪的TypeError: No se pueden leer las propiedades de indefinido (leyendo 'entonces')

Fenómeno

Después de modificar el atributo de diseños del componente Col de antd para abarcar y cambiar dinámicamente el ancho de la columna de extensión escuchando el evento de cambio de tamaño, se informa un error TypeError: Cannot read properties of undefined (reading ‘then‘).

Ejemplo complementario uno

Debido a que usé Feibing ice.jsy escribí las siguientes declaraciones en el siguiente proceso, ¡se informó el mismo error!

import {
    
     useRequest as useRequestHook } from 'ice';

const {
    
     data } = useRequest(
    () => wareHouseModel.data && homeService.getAllFixedAssets(wareHouseModel.data, tenantCode),
    {
    
    
      manual: false,
      withFullResult: true,
      refreshDeps: [wareHouseModel.data],
      ready: !!tenantCode,
    },
  );

Código de error clave:

wareHouseModel.data && homeService.getAllFixedAssets(wareHouseModel.data, tenantCode),

Es precisamente por wareHouseModel.data &&la lógica AND que se informa el error TypeError: Cannot read properties of undefined (reading ‘then‘), porque si wareHouseModel.datano hay valor, ¡el promiseobjeto devuelto será correcto o incorrecto! ! !

Ejemplo de código 2 de antd que causa este error

const Home = () => {
    
    
    const [colSpan, setColSpan] = React.useState<number>(12);
  
	React.useLayoutEffect(() => {
    
    
	    // 自适应每屏显示坐标点数量设置
	    const resizeColSpan = () => {
    
    
	      const width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
	      let spanNum = 0;
	      if (+width >= 1415 && +width < 1850) {
    
    
	        spanNum = 8;
	      }
	      if (+width >= 1850) {
    
    
	        spanNum = 6;
	      }
	      setColSpan(spanNum);
	    };
	    // 初始时需要触发resize,否则会有样式兼容问题
	    resizeColSpan();
	    const onResize = debounce(() => {
    
    
	      resizeColSpan();
	    }, 50);
	    window.addEventListener('resize', onResize);
	    return () => {
    
    
	      window.removeEventListener('resize', onResize);
	    };
	  }, []);
// ...以下省略部分内容
return (
          {
    
    /* <Col {...layouts} className={`${styles['panel-item']} panel-item`}> */}
            <Col span={
    
    colSpan} className={
    
    `${
      
      styles['panel-item']} panel-item`}>
            {
    
    React.isValidElement(children) &&
              React.cloneElement(children as React.ReactElement, {
    
    
                onClick: (actionKey) => handleClick(actionKey, item),
                hasRemoved: panelList.length >= 3,
              })}
          </Col>
        );

Motivo del error

Dado que el código anterior proporciona uno let spanNum = 0;, el valor predeterminado de 0 provocará un error que indica que no se puede obtener el elemento. Simplemente asígnale un valor de let spanNum = 12;.

Supongo que te gusta

Origin blog.csdn.net/hzxOnlineOk/article/details/133031609
Recomendado
Clasificación