在 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/NextJs useEffect() 总是被调用两次