TypeError: Cannot read property ‘map‘ of undefined

TypeError: Cannot read property ‘map’ of undefined

const formItems = useMemo(() => {
          
   
    return [
      {
          
   
        key: systemName,
        name: 业务系统名称,
        type: input,
        formatter: (v: string) => {
          
   
          return v || -;
        }
      },
      {
          
   
        key: msgTypeName,
        name: 消息类型,
        type: select,
        formatter: (v: string, currentBusinessDetail?: ListRes) => {
          
   
          return currentBusinessDetail.msgClientTypeVOS.map(x => x.msgTypeName) || --;
        }
      },
    ];
  }, []);

这种情况下,提示map没有定义,其实很大可能是map的对象undefined了。可以打断点或者控制台打印排查一下。

const formItems = useMemo(() => {
          
   
    return [
      {
          
   
        key: systemName,
        name: 业务系统名称,
        type: input,
        formatter: (v: string) => {
          
   
          return v || -;
        }
      },
      {
          
   
        key: msgTypeName,
        name: 消息类型,
        type: select,
        formatter: (v: string, currentBusinessDetail?: ListRes) => {
          
   
          return (currentBusinessDetail.msgClientTypeVOS || []).map(x => x.msgTypeName) || --;
        }
      },
    ];
  }, []);

这样子排除掉可以出现空数组的情况就可以解决问题了。

经验分享 程序员 微信小程序 职场和发展