#reactjs #react-native
#реагирует на #реагировать-родной
Вопрос:
Я хочу показать значение своих данных в метке, нужно ли мне каждый раз использовать .map?
Вызов БД:
const { carId } = useParams(); const { carType, setCarType } = useState([]); const getCar (carId) =gt; { CarTypes.GetCar(carId) .then(response) =gt; { setCarType(response.data.data); } } return { lt;h2 className="title"gt; { carType.CarMake } lt;/h2gt; }
Есть ли другой способ сделать это? Я не получаю ошибку, но нужно ли мне выполнять .map, чтобы получить значение? Он возвращает только одно значение.
нужно ли мне делать это каждый раз, когда в ответе будет только 1 значение?
{ carType.map(data =gt; ( lt;h2 className="title"gt; { carType.CarMake } lt;/h2gt; )}
Комментарии:
1. Если у вас есть способ узнать, есть ли у вас только значение или более одного, вы можете избежать этого, в противном случае, если у вас нет этих знаний, я думаю, вам придется использовать их все время
2. Да, возможно, вам придется это сделать. Это полностью зависит от
response.data.data
того, если это массив, который вы должны вызвать, сопоставьте его независимо от его длины3. Это будет только одно значение, возвращаемое на основе переданного идентификатора. Я просто хочу показать значение в метке
Ответ №1:
Если вы действительно уверены, что в массиве всегда будет один элемент, вы можете назначить его, используя определение массива, как показано ниже.
const { carId } = useParams(); const [carType, setCarType] = useState([]); const getCar (carId) =gt; { CarTypes.GetCar(carId).then({data}) =gt; { // See array definition like in the useState const [singleCar] = data.data; setCarType(singleCar); } } return { lt;h2 className="title"gt; { carType.CarMake } lt;/h2gt; }
Вы можете использовать его таким образом, не используя карту()
Ответ №2:
Я думаю, это потому, что при первом рендеринге ваше состояние «CarType» пустое, поэтому оно не может найти свойство «CarMake», поэтому попробуйте вместо этого :
{!!carType.length amp;amp; lt;h2 className="title"gt; { carType.CarMake } lt;/h2gt; }
Комментарии:
1. Он возвращается, если я использую .map, я спрашивал, есть ли другой способ сделать это, если вернется только 1 запись? Всегда будет один и всегда будет ценность, чтобы вернуться.
2. Попробуйте с помощью «setCarType(response.data.data. КарМейк )» вместо этого «setCarType(response.data.data)»