gpt4 book ai didi

reactjs - 为什么 useState 取数据后不起作用

转载 作者:行者123 更新时间:2023-12-04 15:47:01 25 4
gpt4 key购买 nike

当我通过 console.log 从 api 收到我的回复时,它就在那里。但是当我尝试通过 usestate Hook 设置状态时,它不会更新状态。

const [data, setData] = useState([])

const getLocation = () => {
axios
.get(
`https://myrequest=${
process.env.REACT_APP_GOOGLE
}&address=${location}`
)
.then(response => {
console.log(response) //response is present
setData(response)
console.log(data)// data didn't update,empty array
})

};//getLocation 由带有 onClick 的按钮调用

最佳答案

您的代码可以运行,但是 data 不会通过调用 setData 同步更新,并且 data 仍然是对旧数组的引用。

尝试呈现数据,您会看到它正确更新。

示例

const { useState } = React;

function getData() {
return new Promise(resolve => {
setTimeout(() => {
resolve(['foo', 'bar'])
}, 1000)
})
}

function App() {
const [data, setData] = useState([])

function getLocation() {
getData().then(response => {
setData(response)
console.log(data)
})
}

return (
<div>
{data.map(item => (
<div key={item}>{item}</div>
))}
<button onClick={getLocation}>Load location</button>
</div>
);
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>

<div id="root"></div>

关于reactjs - 为什么 useState 取数据后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com