Функциональная реализация обновления переменной useState, не меняющая значение соответствующим образомJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Гость
 Функциональная реализация обновления переменной useState, не меняющая значение соответствующим образом

Сообщение Гость »


У меня есть функция, которая обновляет значения состояния ChatId, currUser и msg. Эта функция вызывается дважды, поэтому я ожидаю, что значения будут обновлены дважды. Однако значения обновляются только один раз. Что я делаю не так?

Это функция:

const displayMessage = (сообщение) => { const newMsg = {id:chatId, текст: сообщение, отправитель: currUser}; setChatId((prevId) => prevId + 1); setCurrUser((prevUser) => { вернуть prevUser === "пользователь"? «бот»: «пользователь»; }); console.log(`currUser: ${currUser}`); setMsg((prevMsg) => [...prevMsg, newMsg]); }; Эта функция вызывается в fetchApi() и handleSend().

Это весь код:

импорт { Коробка, Текстовое поле, Кнопка, Типография, Аватар, Сетка, Бумага, } из "@mui/material"; импортировать SendIcon из «@mui/icons-material/Send»; импортировать {useState, useEffect} из «реагировать»; импортировать аксиомы из «аксиом»; константные сообщения = [ { id: 1, текст: «Привет!», отправитель: «бот» }, { id: 2, текст: «Привет!», отправитель: «пользователь» }, { id: 3, текст: «Чем я могу вам помочь сегодня?», отправитель: «бот» }, ]; функция Приложение() { const [input, setInput] = useState(""); const [msg, setMsg] = useState (сообщения); const [chatId, setChatId] = useState(4); const [currUser, setCurrUser] = useState("пользователь"); const fetchApi = async () => { пытаться { const ответ = ожидайте axios.get( `https://www.omdbapi.com/?apikey=213f50cd&t=${input}` ); displayMessage(response.data.Plot); } поймать (ошибка) { console.error(ошибка); } }; const handleSend = () => { if (input.trim() !== "") { console.log(`пользовательский ввод: ${input}`); // setCurrUser(currUser === "пользователь"? "бот": "пользователь"); // setCurrUser((prevUser) => (prevUser === "user" ? "bot" : "user"); displayMessage (вход); выборкапи(); } }; const displayMessage = (сообщение) => { const newMsg = {id:chatId, текст: сообщение, отправитель: currUser}; setChatId((prevId) => prevId + 1); setCurrUser((prevUser) => { вернуть prevUser === "пользователь"? «бот»: «пользователь»; }); console.log(`currUser: ${currUser}`); setMsg((prevMsg) => [...prevMsg, newMsg]); }; const handleInputChange = (событие) => { setInput(event.target.value); }; возвращаться ( {msg.map((сообщение, индекс) => ( ))} Отправлять ); } const Сообщение = ({ сообщение }) => { const isBot = message.sender === "бот"; возвращаться ( {isBot ? «Б» : «У»} {message.text} ); }; экспортировать приложение по умолчанию; Я попробовал обновить переменные состояния функциональным способом, но это все равно не сработало.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»