J'ai commencé à créer une application Web comme Facebook Messenger dans React.js. Je reçois des commentaires de l'utilisateur, puis j'utilise l'état et cela fonctionne parfaitement. Je montre cette entrée dans la console qui fonctionne également parfaitement comme on peut le voir sur la capture d'écran de la console
le problème est que j'essaie d'afficher l'entrée (quel utilisateur entre) et cela ne fonctionne pas Voici mon code
import React, {useState} from 'react';
import './App.css';
function App() {
const [input, setInput] = useState('');
const [messages,setMessages]=useState([]);
console.log(messages);
const sendMessage = (event)=>{
setMessages([...messages,input]);
setInput('');
}
return <div className="App">
<h1>Messenger</h1>
<input value={input} onChange={event => setInput(event.target.value)}/>
<button onClick={sendMessage}>Send Message</button>
{
messages.forEach(message =>{
<p>{message}</p>
})
}
</div>;
}
export default App;
3 Réponses :
Instantané:
import React, {useState} from 'react';
function App() {
const [input, setInput] = useState('');
const [messages,setMessages]=useState([]);
console.log(messages);
const sendMessage = (event)=>{
setMessages([...messages,input]);
setInput('');
}
return <div className="App">
<h1>Messenger</h1>
<input value={input} onChange={event => setInput(event.target.value)}/>
<button onClick={sendMessage}>Send Message</button>
{
messages.map(message =>
<p>{message}</p>
)
}
</div>;
}
export default App;
Voici le lien sandbox du code de travail
J'ai utilisé map () au lieu de forEach () mais cela pose le même problème
vous utilisiez très probablement une map comme messages.map(message =>{ <p>{message}</p>} ) qui ne renvoie rien donc aucune sortie n'est affichée à l'écran.
:) Bon codage
Vous devez utiliser map() qui itère sur une liste, transforme chaque membre de cette liste et renvoie une autre liste de la même taille avec les membres transformés au lieu de forEach() qui itère sur une liste et applique une opération avec des effets secondaires à chaque membre de la liste.
Méthode 1:
{
messages.map((message) =>{
return <p>{message}</p>
})
}
Méthode 2:
{
messages.map((message) =>(
<p>{message}</p>
))
}
Utilisez map au lieu de forEach . map renvoie un nouveau tableau avec le résultat de la fonction de rappel pour chaque élément du tableau.
{ messages.map(message => <p>{message}</p>)}
Démo de travail: - https://codesandbox.io/s/compassionate-chatterjee-2eml6?file=/src/App.js