Реагировать. Я пытаюсь установить состояние цитаты по умолчанию в массив, содержащий один случайный объект из моего массива цитат, когда браузер запускается

#reactjs

Вопрос:

Я пытаюсь установить значение цитаты по умолчанию для случайной цитаты из нашего списка цитат на luanch. В настоящее время на luanch мы повторно собираем наши данные и устанавливаем их в кавычки. В нашем окне не отображается котировка до тех пор, пока мы не нажмем нашу кнопку. Я хочу иметь значение по умолчанию для цитаты, чтобы при запуске у меня отображалась случайная цитата.

 import React from 'react' import { useEffect, useState } from 'react'  const QuoteGenerator = () =gt; {  //Initializing quote and quotes  const [quotes, setQuotes] = useState([])  const [quote, setQuote] = useState([])  //Fetching our quote list  useEffect(() =gt; {  fetch('https://jsonplaceholder.typicode.com/posts')  .then(res =gt; res.json())  .then(data =gt; setQuotes([...data])) }, [])  //This function is used to update the current quote displayed to a new quote when our button  //is clicked const setNewQuote = () =gt; {  const index = Math.floor(Math.random() * 100)  return setQuote(quotes.slice(index, index   1 )) } //On launch quoteEntry is an empty array. //I want to set the default state of quote to a random array from quotes containing one  //object. const quoteEntry = quote.map(item =gt; (  lt;div key={item.id}gt;  lt;h3gt;{item.title}lt;/h3gt;  lt;/divgt; )) return ( //What you see in browser  lt;divgt;  lt;h1gt;Your Quotelt;/h1gt;  lt;br /gt;  lt;divgt;  lt;h5gt;{quoteEntry}lt;/h5gt;  lt;/divgt;  lt;br /gt;  lt;button onClick={setNewQuote}gt;New quotelt;/buttongt;  lt;/divgt; ) }  export default QuoteGenerator  

Ответ №1:

Вы можете попробовать что-то вроде этого

 import React from 'react'  import { useEffect, useState } from 'react'   const QuoteGenerator = () =gt; {  //Initializing quote and quotes  const [quotes, setQuotes] = useState([]);  const [quote, setQuote] = useState([]);  //Fetching our quote list  useEffect(() =gt; {  fetch("https://jsonplaceholder.typicode.com/posts")  .then((res) =gt; res.json())  .then((data) =gt; {  setQuotes([...data]);  const index = Math.floor(Math.random() * 100);  setQuote([...data.slice(index, index   1)]);  });  }, []);    //This function is used to update the current quote displayed to a new quote when our button  //is clicked  const setNewQuote = () =gt; {  const index = Math.floor(Math.random() * 100);  setQuote(quotes.slice(index, index   1));  };  //On launch quoteEntry is an empty array.  //I want to set the default state of quote to a random array from quotes containing one  //object.  function quoteEntry() {  return quote.map((item) =gt; (  lt;div key={item.id}gt;  lt;h3gt;{item.title}lt;/h3gt;  lt;/divgt;  ));  }  return (  //What you see in browser  lt;divgt;  lt;h1gt;Your Quotelt;/h1gt;  lt;br /gt;  lt;divgt;  lt;h5gt;{quoteEntry()}lt;/h5gt;  lt;/divgt;  lt;br /gt;  lt;button onClick={setNewQuote}gt;New quotelt;/buttongt;  lt;/divgt;  );  };    export default QuoteGenerator  

Комментарии:

1. Спасибо вам за решение этой проблемы. Теперь страница загружается со случайной цитатой!!!