渲染组件时,React useEffect 不会触发获取

瑞安·里格利

我正在尝试从 JSON 获取数据并将该数据映射到组件,当我注释掉组件时,获取成功检索了我的数据(通过控制台日志)。但是当我打开组件时,应用程序失败并显示错误“无法读取未定义的属性‘根’”。

我猜这是因为组件在 fetch 触发之前渲染导致它出错,但我不知道如何修复它。

对我的知识缺乏提前道歉,我刚刚开始学习React,非常绿色。


import "./app.css";
import Legal from "../legal/Legal";
import BlogEntry from "./BlogEntry";

const Blog = ({ setSelectedLink }) => {
  const [items, setItems] = useState({});
  const fetchItems = async () => {
    const data = await fetch("https://api.jsonbin.io/v3/b/60bc11a492164b68bec13b15", {
      method: "GET",
      headers: {
        "X-Master-Key": "<API KEY HIDDEN FOR STACKOVERFLOW>",
      },
    });

    const items = await data.json();
    console.log(items);
    setItems(items);
  };
  useEffect(() => {
    fetchItems();
    window.scroll(0, 0);
    setSelectedLink(1);
  }, []);
  return (
    <>
      <div className="blog-page">
        <div className="blog-container">
          {items.record.root.map((entry) => {
            return (
              <BlogEntry
                key={entry.id}
                id={entry.id}
                title={entry.title}
                date={entry.date}
                body={entry.body}
              />
            );
          })}
        </div>
      </div>
      <Legal />
    </>
  );
};

export default Blog;
碘酒
  1. 设置默认值 items.record.root
const [items, setItems] = useState({ record: { root: [] } });
  1. 传递false到您的效果挂钩的依赖阵列有它运行一次(也是唯一一次)
  useEffect(() => {
    fetchItems();
    window.scroll(0, 0);
    setSelectedLink(1);
  }, [false]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React组件渲染两次且未触发useEffect

反应-UseState不会在useEffect钩子内部获取后触发重新渲染

重投时不会触发useEffect

使用useEffect时,react组件会渲染几次

为什么useEffect不会在每个渲染上触发?

为什么我的组件即使使用了 useEffect 也不会重新渲染?(React.js)

UseState不会触发useEffect

获取封装在 HOC 中的 useEffect 中的数据时组件的无限渲染

PReact useEffect 不会在状态改变时触发

React useEffect不会在路线更改时触发

prop依赖项更改时,react useEffect挂钩不会触发

React钩子形式useEffect不会通过调用另一个组件来重新渲染功能组件

React useEffect不重新渲染功能组件

异步函数进入useEffect在组件渲染后获取数据

从 useEffect 中的 api 获取并相应地渲染组件

在子组件的useEffect之前触发父组件的useEffect

React useEffect 没有被触发

道具更改不会触发useEffect

每当组件安装时,React hook useEffect都会导致初始渲染

React的useEffect何时在组件生命周期内触发?

useEffect 在与 useReducer 一起使用时不会触发重新渲染

为什么我的React的组件点击方法在渲染时触发?

React onClick 事件仅在渲染组件时触发

渲染之前在useEffect挂钩中获取数据-React

使用 React useEffect 获取数据和条件渲染

状态更新后,React useEffect不会重新加载组件

React 16.13.1 - 当 props 改变时子组件不会重新渲染

当 props 改变时,React 组件不会重新渲染

从数组映射时,React子组件不会重新渲染