javascript - 使用 React Hooks 构建的 React Div 面板引发违规:元素类型无效
问题描述
这个 React div 面板是使用 React hooks 构建的,旨在与拖放功能一起使用。但是,它会引发 Invariant Violation: Element Type Invalid on rendering。
该面板是用 Meteor 中的 react hooks 构建的,如下所示。
import React, { useState, useCallback } from 'react';
import update from 'immutability-helper';
import ProjectItemPreview from './ProjectItemPreview.js';
export const ProjectItemsPanel = () => {
{
//const [cards, setCards] = defineInitialState(props.projectID);
const [cards, setCards] = useState([
{
id: 1,
text: 'Write a cool JS library',
},
{
id: 2,
text: 'Make it generic enough',
},
{
id: 3,
text: 'Write README',
},
{
id: 4,
text: 'Create some examples',
},
{
id: 5,
text:
'Spam in Twitter and IRC to promote it (note that this element is taller than the others)',
},
{
id: 6,
text: '???',
},
{
id: 7,
text: 'PROFIT',
},
]);
const moveCard = useCallback(
(dragIndex, hoverIndex) => {
const dragCard = cards[dragIndex];
setCards(
update(cards, {
$splice: [
[dragIndex, 1],
[hoverIndex, 0, dragCard],
],
}),
);
},
[cards],
);
const renderCard = (card, index) => {
return (
<ProjectItemPreview
key={card.id}
index={index}
id={card.id}
text={card.text}
moveCard={moveCard}
/>
);
};
return (
<div>{cards.map((card, i) => renderCard(card, i))}</div>
);
}
};
export default ProjectItemsPanel;
在 EditProject.js 中使用组件如下:
import ProjectItemsPanel from './ProjectItemsPanel.js';
...
<DndProvider backend={HTML5Backend}>
<ProjectItemsPanel />
</DndProvider>
执行并尝试在页面中呈现面板会导致以下错误:
Uncaught Invariant Violation:元素类型无效:期望字符串(对于内置组件)或类/函数(对于复合组件)但得到:对象。
检查
ProjectItemsPanel
.
更改为此导入无效:
import {ProjectItemsPanel} from './ProjectItemsPanel.js';
解决方案
由于您遵循命名导出,因此导入组件的正确方法是:
import {ProjectItemsPanel} from './ProjectItemsPanel.js';
<ProjectItemPreview/>
此外,通过查看代码,您在此文件中导入的子组件也可能存在问题。
如果 的导入方法<ProjectItemPreview/>
错误,会导致和你上面提到的一样的错误。
推荐阅读
- ios - Capacitor iOS App 无法缩放到全高
- classification - knn.fit 返回 ValueError:使用序列设置数组元素
- r - R中的示例函数一遍又一遍地返回相同的值
- audio - Rust 中的 48Khz 立体声大端 PCM 到 16Khz 单声道大端 PCM 音频
- node.js - 在这个例子中如何计算并从数组中获取数据?
- mysql - 获取日期最早的不同行
- wpf - WPF XAML:将图像放在 TextBlock 附近,但将文本与行中心对齐
- terraform - 钥匙在哪里?
- angular - 角度绑定问题 - 段落不更新
- django - Azure 应用服务托管的 Django APP 的管理面板中没有 CSS