Вместо передачи определенного randomQuote и randomAuthor.
<a className="twitter-share-button" id="tweet-quote" href={`https://twitter.com/intent/tweet?text=${randomQuote}--${randomAuthor}`}>Tweet this one!</a>
Попробуйте определить цитату и автора таким образом.Чтобы убедиться, что желаемое состояние и объект уже доступны, просто внесите небольшую проверку, прежде чем присваивать контент константе.
const selectedQuote = this.state.quotes[this.state.rndNum];
const quote = selectedQuote && selectedQuote.body;
const author = selectedQuote && selectedQuote.email;
И используйте его в своем возвращении, например:
<a className="twitter-share-button" id="tweet-quote" href={`https://twitter.com/intent/tweet?text=${quote}--${author}`}>Tweet this one!</a>
Зачем мне проверять, доступен ли this.state.quotes[this.state.rndNum]
уже? Несмотря на то, что вы запускаете выборку данных в вашем componentWillMount (), не гарантируется, что состояние будет заполненоданные, когда он рендерит в первый раз.Вот почему вам нужно проверить, действительно ли данные доступны - в противном случае вы пытаетесь получить доступ к тому, чего просто нет, что приведет к ошибке, с которой вы столкнулись.
Еще один совет: пожалуйста, посмотрите наЖизненные циклы реагирующих компонентов: https://reactjs.org/docs/react-component.html componentWillMount()
устарела и не должна использоваться с React 16. вкл.