Componenti ricorsivi in ​​React

Credo che molti di voi debbano avere familiarità con il concetto di ricorsione . In caso contrario, passare attraverso questo collegamento .

Gli esempi sono il modo migliore per spiegare qualcosa, quindi prenderemo anche un esempio.

Supponiamo che tu debba creare un componente per i commenti nidificati (hai un commento e quando rispondi a quel commento dovrebbe apparire in un formato nidificato e così via)
Ecco un'immagine per riferimento.

Quindi, dividiamo il problema in due parti.
Parte 1: Crea il componente per un normale elenco di commenti.
Parte 2: modificare il componente per i commenti nidificati.

Puoi trovare il codice funzionante completo qui

Parte 1: Crea il componente per un normale elenco di commenti.
Innanzitutto, mantieni uno stato per una serie di commenti.

const getDate = () => {
var today = new Date();
return (
today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate()
);
};
const getTime = () => {
var today = new Date();
return today.getHours() + ":" + today.getMinutes();
};
const [commentsArray, setCommentsArray] = useState([
{
username: Jen,
userId: 1,
date: getDate(),
time: getTime(),
content: "How Artistic!",
replies: [
 {
 username: Elliot,
 userId: 2,
 date: getDate(),
 time: getTime(),
 content: "True",
 replies: []  //This represents the nested comment
 }
]
}
]);

//inside return statement of parent component
<div>
{commentsArray.map((item, index) => {
return (
 <CommentItem
 key={index}
 getDate={getDate}
 getTime={getTime}
 item={item}
 />
);
})}
</div>

Ecco come appare il tuo componente CommentItem .

import React, { useState }from 'react'
//props.item is each comment
function CommentItem(props) {
return (
<div>
<div>{props.item.username}</div>
<div>{props.item.date} at {props.item.time}</div>
</div>
)
}
export default CommentItem

const nestedComments = (props.item.replies || [])
.map((item, index) => {
return (
<CommentItem
 item={item}
 key={index}
/>
);
});

Aggiungeremo questa costante nella nostra dichiarazione di ritorno di CommentItem. Quindi, il nostro componente finale assomiglia a questo.

import React, { useState }from 'react'
//props.item is each comment
function CommentItem(props) {
const nestedComments = (props.item.replies || [])
.map((item, index) => {
return (
<CommentItem
 item={item}
 key={index}
/>
);
});
return (
<div>
<div>{props.item.username}</div>
<div>{props.item.date} at {props.item.time}</div>
<div>{nestedComments}</div>
</div>
)
}
export default CommentItem

Per ora è tutto, per qualsiasi domanda contattami a [email protected] .

Suggested posts

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Introduzione Un ictus è un'emergenza medica che può colpire chiunque in qualsiasi momento. Si verifica quando il flusso sanguigno verso una parte del cervello viene interrotto, portando a un'improvvisa perdita della funzione cerebrale.

Jest: un potente framework di test JavaScript

Jest: un potente framework di test JavaScript

Il test è una parte essenziale dello sviluppo del software. Assicura che il codice sia affidabile, funzioni come previsto e riduce la probabilità di errori.

Related posts

La rivoluzione sul posto di lavoro: i migliori esperti discutono di lavoro ibrido e remoto

La rivoluzione sul posto di lavoro: i migliori esperti discutono di lavoro ibrido e remoto

Nel panorama aziendale in rapida evoluzione di oggi, il concetto di lavoro ibrido e remoto ha acquisito uno slancio senza precedenti. Mentre le aziende continuano ad adattarsi alle mutevoli esigenze e aspettative dei propri dipendenti, esperti di vari settori si sono riuniti per discutere i vantaggi, le sfide e il futuro di questo modo di lavorare trasformativo.

Niente più password: come le passkey sostituiranno la tua password

Niente più password: come le passkey sostituiranno la tua password

Per evitare ambiguità verranno utilizzati i seguenti termini; Autenticatore; Il telefono cellulare utilizzato per effettuare il login Sito web; Il sito Web o l'applicazione che l'utente sta utilizzando per effettuare la richiesta di accesso al Servizio; Il fornitore che fornisce il servizio dato, ad es

La lenta erosione: svelare i modi in cui le persone deperiscono nella loro carriera

La lenta erosione: svelare i modi in cui le persone deperiscono nella loro carriera

Nel mondo frenetico e competitivo di oggi, la propria carriera gioca un ruolo significativo nella crescita personale, nella stabilità finanziaria e nella soddisfazione generale della vita. Tuttavia, molte persone si trovano intrappolate in un ciclo inesorabile di stagnazione e insoddisfazione, che si esauriscono gradualmente nella loro vita professionale.

Due anni di design: il buono, il brutto e il cattivo...

Due anni di design: il buono, il brutto e il cattivo...

"Ehi Siri, suona Me Dive di Olivia Dean." Era maggio 2021 quando ho iniziato il mio tirocinio presso la Future Academy Africa ad Akure, in Nigeria.