У меня есть таблица, заполнение из веб - Api.

Когда я удаляю отдел, связанный с каким-то пользователем. Объект отдела становится нулевым. И у меня происходит сбой моего приложения реагирования с такой ошибкой: TypeError: Не удается прочитать свойство 'name' из null

Я пробовал троичный, как это, но это не помогло

(typeof user !=='undefined' && typeof user.department.name !=='undefined') ? user.department.name : ''
  refreshList()
    {
       fetch("https://localhost:5001/api/users")
       .then(response=> response.json())
       .then(data=> { 
        this.setState({users:data});
       });
    }

render(){
        const {users, userid, username, userfullname, department} = this.state;
        return(
<tbody>
           {users.map(user=> 
               <tr key = {user.id}> 
               <td>{user.id}</td>
               <td>{user.userName}</td>
               <td>{user.fullName}</td>
               <td>{user.department.name}</td>  <---- here i am getting crash when department is null
               
               
               ....
               )
1
hoozr 31 Май 2020 в 18:04

4 ответа

Лучший ответ

Это ошибка JavaScript. Если вы попытаетесь получить доступ к свойству в объекте, который является нулевым или неопределенным, вы получите ошибку типа. Решение заключается в проверке данных перед их отображением следующим образом:

<td>{user.department && user.department.name}</td>
1
Victor 31 Май 2020 в 19:57

Пожалуйста, исправьте свою троицу следующим образом ...

{user.department ? user.department.name : ''}

Здесь он проверяет user.department.name только в том случае, если user.department НЕ null.

1
Sennen Randika 31 Май 2020 в 15:10

Вам нужно просто проверить, является ли свойство объекта неопределенным или нет.

<td>
    {user.department ? user.department.name ? user.department.name :null :null}
</td>
0
Fatema T. Zuhora 31 Май 2020 в 15:15

Это будет обрабатывать неопределенные и нулевые случаи.

<td>{user.department && user.department.name || ''}</td>  
1
hendrixchord 31 Май 2020 в 15:06