javascript - React Hook useEffect 收到了一个依赖未知的函数。改为传递内联函数
问题描述
import { useEffect } from "react"
import axios from 'axios'
import WeatherDisplay from './WeatherDisplay'
const Weather = ({capital}) => {
const [weather,setWeather] = useEffect([])
const a_key = 'c275595564c64c757cbb51ecfe3901de'
const params = {
access_key: `${a_key}`,
query: `${capital}`
}
const fetchWeather = (params) => {
axios
.get('https://api.weatherstack.com/current', {params})
.then(response => {
setWeather(response.data)
})
}
useEffect(fetchWeather, [params])
console.log(weather)
return(
<div>
<h2>Weather in {capital}</h2>
<WeatherDisplay weather={weather}/>
</div>
)
}
export default Weather
我将如何解决这个问题?
解决方案
混合参数和钩子。
import { useEffect, useState } from "react"
import axios from 'axios'
import WeatherDisplay from './WeatherDisplay'
const Weather = ({capital, params}) => { //weather params should be provided
const [weather, setWeather] = useState([]); // weather will be []
const a_key = 'c275595564c64c757cbb51ecfe3901de';
const params = {
access_key: `${a_key}`,
query: `${capital}`
}
const fetchWeather = () => {
axios
.get('https://api.weatherstack.com/current', {params})
.then(response => {
setWeather(response.data)
})
}
useEffect(fetchWeather, []);// dependency array probably should be empty
return(
<div>
<h2>Weather in {capital}</h2>
<WeatherDisplay weather={weather}/>
</div>)
}
export default Weather
推荐阅读
- arrays - 如何在 React 的 map 中使用 for 循环
- android - 如何减少定期工作请求的最小间隔?
- android - FireMonkey:Android 上缺少抗锯齿和抖动效果
- javascript - Vue Composition Api 渲染功能同步发射不起作用
- batch-file - 从不同的驱动器运行批处理脚本
- solid - 如何使用@inrupt/solid-client 模拟容器?
- node.js - 在 AWS WebSocket Gateway Lambda 中如何返回错误?
- html - 如何为连续重叠的三角形编写通用 CSS?
- multidimensional-array - 如何使用自定义步幅创建 ndarray::ArrayView?
- reactjs - findIndex 和 slice 方法如何在 react reducer 函数中工作