我正在使用Contentful CMS JS SDK,并且下面的代码不会更新我的React Hook状态。我相信,这更像是将诺言与React钩子以及React渲染问题相结合。我了解到,promise会在稍后解析时设置挂钩值,但是到那时我的组件已经使用初始数据(空字符串)进行渲染,因此,在这种情况下,如何使我的组件重新当将react hook状态设置为promise中的正确值时,渲染,以便我的Button显示它。 任何帮助表示赞赏。谢谢
问题就在这里。
...
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
....
答案 0 :(得分:0)
我刚刚尝试了您的代码,它似乎对我有用。 :)
https://codesandbox.io/embed/react-hooks-demo-e4wgo
我认为您应该按照in this article的说明使用useEffect
。