【问题标题】:How to properly use the UseCallback Hook如何正确使用 UseCallback Hook
【发布时间】:2020-03-23 15:25:38
【问题描述】:

下面的代码给了我一个警告

React Hook useEffect 缺少依赖项:'getData'。
要么包含它,要么移除依赖数组

我知道在新的 react 规则中我必须将它包装在 useCallBack 中,但我不确定该怎么做。有人可以为我提供如何使用,正确使用CallBack。提前谢谢你!

import React, { useState, useEffect, useCallback } from "react"
import axios from "axios"

const Home = () => {
  const [data, setData] = useState(null)
  const [query, setQuery] = useState("reacthooks")

  useEffect(() => {
    getData()
  }, [query])

  const getData = async () => {
    const response = await axios.get(
      `http://hn.algolia.com/api/v1/search?query=${query}`
    )
    setData(response.data)
  }

  const handleChange = event => {
    event.preventDefault()
    setQuery(event.target.value)
  }

  return (
    <div>
      <input type='text' onChange={handleChange} />
      {data &&
        data.hits.map(item => (
          <div key={item.objectID}>
            {item.url && (
              <>
                <a href={item.url}>{item.title}</a>
                <div>{item.author}</div>
              </>
            )}
          </div>
        ))}
    </div>
  )
}

export default Home

【问题讨论】:

  • 而不是useCallback,只需在效果中定义getData
  • 很想看看 useCallBack 是如何使用的

标签: javascript reactjs


【解决方案1】:

在您的情况下,我只需将 getData 函数添加到 useEffect 挂钩中即可。

尝试以下方法:

useEffect(() => {
    const getData = async () => {
       const response = await axios.get(
           `http://hn.algolia.com/api/v1/search?query=${query}`
       )
       setData(response.data)
    }

    getData()
}, [query])

我希望这会有所帮助!

【讨论】:

  • 这肯定有效。但是我有一个应用程序,我正在研究它的规模要大得多。我只是想看看在使用 UseCallBack 时我会做什么
猜你喜欢
  • 2022-07-04
  • 1970-01-01
  • 2011-05-16
  • 2020-07-27
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
相关资源
最近更新 更多