javascript - ReactJS:调用 setLoading 时状态没有改变

标签 javascript reactjs react-hooks

当调用addItems()函数时,我将加载状态更改为true。但它始终是错误的。我在这里缺少什么?

const Persons = props => {
  const [data, setData] = useState([]);

  useEffect(() => {
    addItems();
  }, []);

  let [position, setPosition] = useState(
    (props && props.match && props.match.params.placeholder) || 0
  );

  const [loading, setLoading] = useState(false);

  const numOfItem = 4;

  const addItems = () => {
    setLoading(true);
    const items = [...data];

    for (let i = 0; i < numOfItem; i++) {
      const newItem = getData[position];
      // if no item is found than go out from that loop
      if (!newItem) break;
      position++;
      items.push(newItem);
    }

    setData(items);
    setPosition(position);
    setLoading(false);
  };

  return (
    <>
      {data.map(p => (
        <Person person={p} />
      ))}

      <button onClick={addItems}>Quick Load More {numOfItem} items</button>
   </>
  );
};

在开发工具中,我看到加载状态始终保持错误。

最佳答案

您可能需要将加载状态设置为 true,并在设置所有项目后将加载状态更改为 false。

关于javascript - ReactJS:调用 setLoading 时状态没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60374117/

相关文章:

javascript - 如何使用 Javascript 检查 Sharepoint 列表中的列的值是否为空或 null?

javascript - React 禁用所有事件。生成 DOM 时如何忽略 `onClick` 和 `onChange` 属性

javascript - 你如何模拟 useDebounce ?

javascript - jQuery,如何通过选中复选框来调用 url

javascript - "HTML tidy"有 JavaScript 或 Ruby 版本吗?

javascript - Firebase 3.0 与 webpack 捆绑时抛出跨源错误

css - 在右侧显示嵌套组件,在左侧显示父组件

javascript - 使用 Collapsible 在 React Native 中创建 Accordion

reactjs - React.memo 不起作用 - 我错过了什么?

javascript - 如何防止执行脚本但在 DOM 中显示它?