在 ReactJS 的 useEffect 中定义后 useEffect 值保持不变

Posted

技术标签:

【中文标题】在 ReactJS 的 useEffect 中定义后 useEffect 值保持不变【英文标题】:useEffect value remains same after defining it in useEffect in ReactJS 【发布时间】:2022-01-19 12:29:15 【问题描述】:

我有一个组件,我想在渲染后获取 API,并将响应数据放入 useState 值中。

所以,在获取 API 后,我尝试在 useEffect 回调中 setState,但没有任何效果。

const [values, setValues] = useState([])

useEffect(() => 
    fetchValues().then(function(result) 
        setValues(result.data)
    )
, []);

提前感谢您的帮助。

【问题讨论】:

代码看起来正确。确保 result.data 有一些值。 【参考方案1】:

您需要链接另一个then 方法。 例如,如果返回的数据是 JSON,将其转换为 JS 对象:

const [values, setValues] = useState([])

useEffect(() => 
    fetchValues().then(result => result.json())
   .then(data => 
       setValues(data)
    )
, []);

如果返回的数据是文本,将result.json()替换为result.text()

【讨论】:

以上是关于在 ReactJS 的 useEffect 中定义后 useEffect 值保持不变的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS 在 UseEffect 中使用 SetInterval 导致状态丢失

(reactjs) useEffect 没有在后台运行

如何从 Reactjs 中的 useEffect 挂钩访问道具

ReactJs/NextJs useEffect() 总是被调用两次

ReactJS:如何只调用一次 useEffect 挂钩来获取 API 数据

删除组件后如何清理react js中的useEffect函数