古腾堡(Gutenberg)仍然很新,但我仍然希望有人遇到此问题并找到解决方案。
我已经使用create-guten-block来制作一个项目并创建了一个选项卡式内容块。我与Gutenberg一起使用react-sortable-hoc来交换项目列表中的项目。我尝试了几种解决方案,但没有得到答案。我遇到的问题是我在控制台中收到此错误,它无法读取未定义的映射。我认为undefined是项对象。
react-dom.min.fa9ca8c8.js:117 TypeError: Cannot read property 'map' of undefined
at eval (block.js?921d:73)
at Td (react-dom.min.fa9ca8c8.js:82)
at hi (react-dom.min.fa9ca8c8.js:102)
at Qg (react-dom.min.fa9ca8c8.js:144)
at Rg (react-dom.min.fa9ca8c8.js:145)
at Sc (react-dom.min.fa9ca8c8.js:158)
at Z (react-dom.min.fa9ca8c8.js:156)
at Kc (react-dom.min.fa9ca8c8.js:155)
at ya (react-dom.min.fa9ca8c8.js:153)
at Object.enqueueSetState (react-dom.min.fa9ca8c8.js:202)
请查看以下我在WordPress Gutenberg中使用的代码。我想我缺少了一些我不知道的东西。任何帮助都将是可贵的。
const { __ } = wp.i18n; // Import __() from wp.i18n
import {
SortableContainer,
SortableElement,
SortableHandle,
arrayMove
} from 'react-sortable-hoc';
const { registerBlockType } = wp.blocks;
registerBlockType( 'cgb/block-tabbed-content', {
title: __( 'tabbed-content - CGB Block' ), // Block title.
icon: 'shield',
category: 'common',
keywords: 'tabbed-content',
attributes : {
items: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item 6'],
},
edit: function( props ) {
const { attributes, setAttributes } = props;
const SortableItem = SortableElement(({value}) => <li>{value}</li>);
const SortableList = SortableContainer(({items}) => {
return (
<ul>
{items.map((value, index) => (
<SortableItem key={`item-${index}`} index={index} value={value}/>
))}
</ul>
);
});
const onSortEnd = ({oldIndex, newIndex}) => {
setAttributes(({items}) => ({
items: arrayMove(items, oldIndex, newIndex),
}));
};
return (
<div className={ props.className }>
<SortableList items={attributes.items} onSortEnd={onSortEnd} />
</div>
);
},
答案 0 :(得分:0)
您需要从items
对象引用attributes
属性。看看是否有帮助。
更新此内容。
{items.map((value, index) => (
<SortableItem key={`item-${index}`} index={index} value={value}/>
))}
对此。
{attributes.items.map((value, index) => (
<SortableItem key={`item-${index}`} index={index} value={value}/>
))}