微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:元素类型无效:预期为字符串或类/函数,但得到:未定义导入错误

如何解决错误:元素类型无效:预期为字符串或类/函数,但得到:未定义导入错误

一个错误

错误:元素类型无效:预期为字符串(对于内置 组件)或类/函数(用于复合组件),但得到: 未定义。您可能忘记了从文件中导出组件 是在其中定义的,或者您可能混淆了认导入和命名导入。

我想在父组件中调用函数。我尝试使用useRef,forwardRef和useImperativeHandle

父组件:

import Tree from '@c-tree'    


const NavTree: FunctionComponent = () => {
  
  const refTree = useRef();

  const tree = () => {
    if (d?.items && status === 'idle') {
      return (
        <Tree onNodeClickCallback={onClick} ref={refTree}>
          {d.items.map(s => (
            <Tree.Asset
              key={s.id}
              name={s.name}
              dataSelected={`${s.id}`}
              item={{
                name: s.name,tenantID: s.id,type: s?.tree?.name,children: [],}}
            />
          ))}
        </Tree>
      );
    }
  };

  return (
    <SideBar
      title={title}
    >
      <Box display="flex" flexDirection="column" height="100%">
        <StyledBox>{tree()}</StyledBox>
      </Box>
    </SideBar>
  );
};

export default NavTree;

子组件:

interface TreeStatic {
  Group: typeof TreeGroup;
  Asset: typeof TreeNode;
}

type TreeComponent = ForwardRefExoticComponent<PropsWithRef<ITreeProps>> & TreeStatic;

interface ITreeProps {
  data?: {
    type: string;
    name: string;
    tenantID: number;
    children?: Array<Object>;
  }[];
  ref: any;
}

const Tree = ({
  data,ref
}: ITreeProps) => {
  const [contextValues,setContextValues] = useState({
    selected: null,opened: {},});
 
  useImperativeHandle(ref,() => ({
    handleCurrentSelected: (selectedname: string) => {
      setContextValues({
      ...contextValues,selected: selectedname,opened: {
        ...contextValues.opened,[selectedname]: !contextValues.opened[selectedname] || false,},});
  }}
  ));

  return (
    <TreeContext.Provider value={contextValues}>
        {
          React.Children.map(children,child => {
            return React.cloneElement(child,childrenProps);
          })
        }
    </TreeContext.Provider>
  );
};

Tree.Group = TreeGroup;
Tree.Asset = TreeNode;

export default forwardRef(Tree) as TreeComponent;

解决方法

我已经完成exported const Tree并进行了下一次导入:

import { Tree } from '@c-tree';

旧导入

import Tree from '@c-tree';

问题出在进口上。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?