reactjs - 带有 fetch api 的 React hook

标签 reactjs axios fetch react-hooks

我想发出一个非常简单的 Fetch 请求(或 axios 请求),然后映射这些结果。

为此,我使用了 useState 和 useEffect,但我肯定做错了什么。

 function App() {
  const [todos, setTodos] = useState({});

  const getTodos = () => {
    const urlTodos = "https://jsonplaceholder.typicode.com/todos/";
    return fetch(urlTodos)
      .then(res => res.json())
      .then(res => {
       return res 
      });
  };

  useEffect(() => {
    getTodos().then(setTodos);
  }, []);

  const [todosSimple, setTodosSimple] = ([
    {
      text: 'learn about react',
      isCompleted :true
    },
    {
      text: 'Danse',
      isCompleted: false
    }
  ])

  console.log(todosSimple)


  return (
    <div className="App">
      {todosSimple.map((todo,index) => {
        return todo;     
      }  
      )}

    </div>
  );
}

Codesandbox

最佳答案

首先你需要更改这一行

const [todos, setTodos] = useState({});

const [todos, setTodos] = useState([]);

因为 todos 变量将有一个默认值,并且它将是一个空对象。并且对象上没有 .map 方法,并且您从 api 收到一个数组。

其次,我建议在最后的 getTodos 中使用 setTodos 函数。

.then(res => setTodos(res))

然后您可以在返回中映射您的todos

here's and example

关于reactjs - 带有 fetch api 的 React hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55128193/

相关文章:

javascript - React-create-library 导入图片问题

reactjs - Redux Toolkit : Error: Actions must be plain objects. 使用自定义中间件进行异步操作

reactjs - react 引导:Dropdown.item,onSelect 返回一个空目标

javascript - 关于我在星球大战应用程序中遇到的问题

html - 为什么当我添加 <a> 标签时图像大小会为我重置

javascript - Jest - 创建 React 应用程序 - Axios : test get mocked

node.js - 如何在 ReactJS 向需要相互 TLS 的外部 REST API 发出请求时包含客户端证书

reactjs - 如何在 React Native 中将 Facebook Graph api 请求转换为 Axios?

git pull from remote ...我可以 pull 一个特定的提交吗?

javascript - Promise.all() 和捕获错误