首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React 'TypeError: items is not iterable‘

React 'TypeError: items is not iterable‘
EN

Stack Overflow用户
提问于 2021-04-06 23:08:16
回答 1查看 92关注 0票数 0

我正在尝试将这个表排序解决方案实现到我正在开发的应用程序中。下面是我正在尝试实现的排序功能的工作代码和框:https://codesandbox.io/s/table-sorting-gxt7g?file=/src/App.js

然而,当我试图在我的应用程序中实现这个解决方案时,我得到了错误:

代码语言:javascript
复制
TypeError: items is not iterable

它指向包含let sortableItems = [...items]的行。无论我是否将项初始化为空数组,我都会得到这个错误:const useSortableData = (items = [], config = null) => { ...or how I have it ...or。

我正在尝试将myArrayOfObjects传递给useSortableData()

有人看到我做错了什么吗?

我应该提一下,这是基于本文中的一个示例:https://www.smashingmagazine.com/2020/03/sortable-tables-react/

代码语言:javascript
复制
  const useSortableData = (items, config = null) => {
    const [sortConfig, setSortConfig] = useState(config);

    const sortedItems = useMemo(() => {
      let sortableItems = [...items];
      if (sortConfig !== null) {
        sortableItems.sort((a, b) => {
          if (a[sortConfig.key] < b[sortConfig.key]) {
            return sortConfig.direction === 'ascending' ? -1 : 1;
          }
          if (a[sortConfig.key] > b[sortConfig.key]) {
            return sortConfig.direction === 'ascending' ? 1 : -1;
          }
          return 0;
        });
      }
      return sortableItems;
    }, [items, sortConfig]);

    const requestSort = (key) => {
      let direction = 'ascending';
      if (
        sortConfig &&
        sortConfig.key === key &&
        sortConfig.direction === 'ascending'
      ) {
        direction = 'descending';
      }
      setSortConfig({ key, direction });
    };

    return { items: sortedItems, requestSort, sortConfig };
  };

  const { items, requestSort, sortConfig } = useSortableData({ myArrayOfObjects });

  const getClassNamesFor = (id) => {
    if (!sortConfig) {
      return;
    }
    return sortConfig.key === id ? sortConfig.direction : undefined;
  };
EN

回答 1

Stack Overflow用户

发布于 2021-04-07 03:13:16

谢谢,塔基。就是这样!

代码语言:javascript
复制
 const useSortableData = (items, config = null) => {
    const [sortConfig, setSortConfig] = useState(config);

    const sortedItems = useMemo(() => {
      let sortableItems = [...items];
      if (sortConfig !== null) {
        sortableItems.sort((a, b) => {
          if (a[sortConfig.key] < b[sortConfig.key]) {
            return sortConfig.direction === 'ascending' ? -1 : 1;
          }
          if (a[sortConfig.key] > b[sortConfig.key]) {
            return sortConfig.direction === 'ascending' ? 1 : -1;
          }
          return 0;
        });
      }
      return sortableItems;
    }, [items, sortConfig]);

    const requestSort = (key) => {
      let direction = 'ascending';
      if (
        sortConfig &&
        sortConfig.key === key &&
        sortConfig.direction === 'ascending'
      ) {
        direction = 'descending';
      }
      setSortConfig({ key, direction });
    };

    return { items: sortedItems, requestSort, sortConfig };
  };

  const { items, requestSort, sortConfig } = useSortableData(myArrayOfObjects);

  const getClassNamesFor = (id) => {
    if (!sortConfig) {
      return;
    }
    return sortConfig.key === id ? sortConfig.direction : undefined;
  };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66971311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档