React Hook setState未按承诺设置

时间:2019-05-21 06:22:09

标签: react-native variables es6-promise react-hooks contentful

我正在使用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
....

1 个答案:

答案 0 :(得分:0)

我刚刚尝试了您的代码,它似乎对我有用。 :)

https://codesandbox.io/embed/react-hooks-demo-e4wgo

我认为您应该按照in this article的说明使用useEffect