изменение состояния с сообщением об ошибке при ошибке

#javascript #reactjs

#javascript #reactjs

Вопрос:

если пользователь существует, он отобразит все сообщение, как на прикрепленном скриншоте. скриншот еще, идентификатор пользователя не существует, я хочу, чтобы на том же дисплее отображалось сообщение: «пользователь не существует». это происходит внутри catch, но затем веб-сбой.

 ...
export default function AllMessages(){
    const [messagesState, setMessagesState] = useState([]);

    const getAllMessages = async () =>{
        let userId = document.querySelector("#userInput").value;
        try{
            const response = await axios.get("http://localhost:3001/messaging/get-all-messages/"   userId)
            setMessagesState(response.data);
        }
        catch( e ) {
            let userNotFound = {
                error: "user not found"
            }
            setMessagesState(userNotFound);
        }
    }
    ...
    return(
            ...
            <div className="message-item all-messages">
            {messagesState.error ? <h1> messagesState.error </h1>: 
                messagesState.map(message => (
                    <ul class="list-group">
                        <Message handleDelete={() => handleDelete(message.id,message.receiver)} from = {message.sender} to = {message.receiver} subject = {message.subject} content = {message.message} date = {message.creationDate}/>
                    </ul>
                ))
            }
            </div>
        </div>
    )
}
  

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

1. Почему бы не использовать if else?

2. где? как? новое с этим языком

Ответ №1:

if(response.data){ setMessagesState(response.data); } else { пусть userNotFound = { ошибка: «пользователь не найден» } setMessagesState(userNotFound); }