无法读取未定义的属性'indexOf'-react-sortable-hoc

时间:2019-09-16 21:15:05

标签: javascript reactjs react-sortable-hoc

我正在尝试获取下面的结构。

https://imgur.com/NBRGlhM

具有标题的三列和只能在一个列中移动的列卡。 this.state.item ['lists']移至组件SortableList。然后在items.map ((item, index) =>之后进行迭代并移至组件SortableItem。然后在value.listItems之后进行迭代,并想要显示列标题和该列中的卡片。我收到错误消息:

  

无法读取未定义的属性'indexOf'

此处演示:https://stackblitz.com/edit/react-jpszoq

import {SortableContainer, SortableElement} from 'react-sortable-hoc';
import arrayMove from 'array-move';


const SortableItem = SortableElement(({value}) => {
  return(
    value.listItems.map((it, index) => {
      <li>{it.title}</li>
    })
  )    
})

const SortableList = SortableContainer(({items}) => {
  console.log(items)
  return (

    <ul>
      {
        items.map((item, index) => 
            <div>{item.name}
              <SortableItem key={`item-${item.id}`} index={index} value={item} />
            </div>
        )

      }
    </ul>
  );
});

class App extends Component {
  constructor() {
    super();
    this.state = {
       item: {
        id: "abc123",
        name: "AAA",
        lists: [
          {
            id: "def456", 
            list_id: "654wer",
            title: 'List1',
            desc: "description",
            listItems: [
              {
                id: "ghj678", 
                title: "ListItems1",
                listItemsId: "88abf1"
              },
              {
                id: "poi098", 
                title: "ListItems2",
                listItemsId: "2a49f25"
              }
            ]   
          },
          {
            id: "1ef456", 
            list_id: "654wer",
            title: 'List 2',
            desc: "description",
            listItems: [
              {
                id: "1hj678", 
                title: "ListItems3",
                listItemsId: "18abf1"
              },
              {
                id: "1oi098", 
                title: "ListItems4",
                listItemsId: "1a49f25"
              }
            ]   
          },
          {
            id: "2ef456", 
            title: 'List 3',
            list_id: "254wer",
            desc: "description",
            listItems: [
              {
                id: "2hj678", 
                title: "ListItems5",
                listItemsId: "28abf1"
              },
              {
                id: "2oi098", 
                title: "ListItems6",
                listItemsId: "234a49f25"
              }
            ]   
          }
        ]
      }
    };
  }

  onSortEnd = ({oldIndex, newIndex}) => {
    this.setState(({lists}) => ({
      lists: arrayMove(lists, oldIndex, newIndex),
    }));
  };

   render() {
     return <SortableList items={this.state.item['lists']} onSortEnd={this.onSortEnd} />;
  }
}

1 个答案:

答案 0 :(得分:2)

您在传递给return的函数中缺少L14上的listItems.map。或者,您可以删除括号。