Я использую Contentful CMS JS SDK, и приведенный ниже код не обновляет состояние React Hook. Я считаю, что это скорее обещания в сочетании с реагирующими хуками в сочетании с проблемой рендеринга React. Я понимаю, что обещание устанавливает значение хука, когда оно разрешается в более позднее время, но к тому времени мой компонент уже отрендерился с начальными данными (пустая строка), поэтому, если это так, как я могу сделать свой компонент повторно? render, когда состояние хука реакции установлено с правильным значением из обещания, чтобы моя кнопка отображала его. Любая помощь приветствуется. Спасибо
Проблема кроется здесь.
...
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.info('STORE URL', name) // name is not set
...
<Button title = {name} /> // name still not set
....
..во-вторых, скорее всего, entry.fields.name тоже пустая строка
совет: сделайте .then(entry => console.info("entered then", entry) || setName(entry.fields.name)), чтобы вы могли сохранить функцию стрелки с одним вкладышем
console.info работает и выводит правильное значение, так что это должно означать, что состояние имени (перехватчик setName) также установлено с правильным значением. Но моя кнопка не получает имени, кроме своего начального значения пустой строки.





Я только что попробовал ваш код, и, похоже, он работает для меня. :)
https://codesandbox.io/embed/react-hooks-demo-e4wgo
Я думаю, вам следует использовать useEffect, как описано в этой статье.
он автоматически перерисовывается, если это пустая строка, то наиболее вероятной причиной является то, что обещание никогда не разрешалось (и код внутри
thenникогда не выполнялся) - вы можете добавить туда журнал консоли, чтобы проверить