JSON сопоставляет объект с таблицей в React

#json #reactjs #object

Вопрос:

У меня есть JSON, который приходит вот так, и я хочу показать этот JSON в таблице в React.

 {
  "Status": true, 
  "discounts": { 
    "individual": {
      "number_of_cars_discount": {
        "1": "1", 
        "10": "1", 
        "2": "0.98", 
      }
    }
  }, 
  "main_price": {
    "client_type": "individual", 
    "large_car": {
      "100": "3", 
      "1000": "0.9", 
      "100000": "0.60", 
    }, 
  }
}
 

Поэтому, чтобы сделать это, я определил

 const [mainPrice, setMainPrice] = useState({});
 

в родительском компоненте, и я извлек его вот так:

 setMainPrice(res.data.main_price);
 

Я отправил mainPrice в дочерний компонент, где я хочу отобразить JSON в таблице:

 <tbody>
          <tr>
            <td>
            {Object.keys(individualPosts).map((key) => (
              <tr>
                <td key={key}>{individualPosts[key]}</td>
              </tr>
            ))}
            </td>
            <td>
            {Object.keys(mainPrice.large_car).map((key) => (
              <tr>
                <td key={key}>{mainPrice.large_car[key]}</td>
              </tr>
            ))}
            </td>
          </tr>
        </tbody>
 

Но это дает мне ошибку: ошибка типа: Не удается преобразовать неопределенное или нулевое значение в объект

Но я не мог понять, почему.

У меня есть другие типы автомобилей, такие как большие вагоны, маленькие вагоны, поэтому мне нужно взять такую основную цену. Я не хочу определять все типы автомобилей и отправлять их дочернему компоненту в качестве реквизита. Или я должен сделать это так?

Пожалуйста, дайте мне совет и решение.

Ответ №1:

Проверка на ноль требуется в таких случаях, чтобы избежать ошибок.

Попробуйте это

 <td>
  {Object.keys(mainPrice?.large_car).length > 0 amp;amp; Object.keys(mainPrice?.large_car).map((key) => (
   <tr>
    <td key={key}>{mainPrice.large_car[key]}</td>
   </tr>
  ))}
</td>
 

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

1. Я получаю ошибку типа: Не могу преобразовать неопределенное или нулевое значение в объект, но дело в том, что mainPrice не является нулевым