React Hook setState 未按承诺设置
React Hook setState not set on promise
我正在使用 Contentful CMS JS SDK,下面的代码不会更新我的 React Hook 状态。它更像是一个结合了反应钩子和反应渲染问题的承诺——我相信。我知道 promise 在稍后解析时会设置挂钩值,但到那时我的组件已经使用初始数据(空字符串)呈现了,所以如果是这种情况,我该如何让我的组件重新 -当反应挂钩状态设置为承诺中的正确值时呈现,以便我的按钮显示它。
任何帮助表示赞赏。谢谢
问题出在这里。
...
import client from 'contentful'
const [name, setName] = useState('')
client.getEntry(data.fields.store.sys.id)
.then(entry => setName(entry.fields.name))
.catch(console.error)
console.log('STORE URL', name) // name is not set
...
<Button title={name} /> // name still not set
....
我刚试过你的代码,它似乎对我有用。 :)
https://codesandbox.io/embed/react-hooks-demo-e4wgo
我认为您应该使用 useEffect
,尽管如 in this article 所述。
我正在使用 Contentful CMS JS SDK,下面的代码不会更新我的 React Hook 状态。它更像是一个结合了反应钩子和反应渲染问题的承诺——我相信。我知道 promise 在稍后解析时会设置挂钩值,但到那时我的组件已经使用初始数据(空字符串)呈现了,所以如果是这种情况,我该如何让我的组件重新 -当反应挂钩状态设置为承诺中的正确值时呈现,以便我的按钮显示它。 任何帮助表示赞赏。谢谢
问题出在这里。
...
import client from 'contentful'
const [name, setName] = useState('')
client.getEntry(data.fields.store.sys.id)
.then(entry => setName(entry.fields.name))
.catch(console.error)
console.log('STORE URL', name) // name is not set
...
<Button title={name} /> // name still not set
....
我刚试过你的代码,它似乎对我有用。 :)
https://codesandbox.io/embed/react-hooks-demo-e4wgo
我认为您应该使用 useEffect
,尽管如 in this article 所述。