Как получить случайный объект из списка, находящийся в state React
Есть код:
import {Component} from "https://cdn.skypack.dev/react@17.0.1";
import ReactDOM from "https://cdn.skypack.dev/react-dom@17.0.1"
import React from 'https://esm.sh/react@18.2.0'
class App extends React.Component{
constructor(props){
super(props);
this.state = {
quote: [
{
text: 'dfsdf',
author: 'sdf'
},
{
text: 'dfsdfdf',
author: 'kjhgfv'
},
],
random_q: null,
}
this.getRandomElement = this.getRandomElement.bind(this)
}
getRandomElement(){
const text = document.getElementById('text')
const author = document.getElementById('author')
this.setState({
random_q: this.state.quote[Math.floor(Math.random() *
this.state.quote.length)]
})
text.innetHTML = this.state.random_q.text
author.innetHTML = this.state.random_q.author
}
render(){
return (
<>
<div id="text">{this.state.quote[Math.floor(Math.random() *
this.state.quote.length)].text}</div>
<div id="author">{this.state.quote[Math.floor(Math.random() *
this.state.quote.length)].author}</div>
<div id="new-quote"><button onClick = {this.getRandomElement}>New quote</button></div>
<a id="tweet-quote"></a>
</>
)
}
}
ReactDOM.render(<App />, document.getElementById('quote-box'));
#quote-box{
margin-left: 55px
}
<div id="quote-box">
</div>
Он получает случайную цитату и её автора из state, но почему-то цитата и авторы разные, но должно быть те же авторы, что и у цитаты в state, а не случайные. Как это можно исправить?
Источник: Stack Overflow на русском