Что заставляет этот JSON иметь неожиданный EOF?

#json #reactjs #react-native

#json #reactjs #react-native

Вопрос:

Я пытаюсь получить JSON из API. Я знаю, что API работает, потому что я могу получить данные, позвонив через Postman, но когда я пытаюсь получить данные в своем приложении, я получаю «Ошибка синтаксического анализа JSON: неожиданный EOF».

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

Код:

 const DrinkPopup = (props) => {

  const [drinkDetails,setDrinkDetails] = useState([])

  fetch('https://www.thecocktaildb.com/api/json/v1/1/lookup.php?i='   props.drink)
    .then((response) => response.json())
    .then((json) => setDrinkDetails(json.drinks))
    .catch((error) => console.error(error))


  return(
    <Modal isVisible={props.modalVisible}
    onBackdropPress={()=>{props.setModalVisible(false)}} //allows closing modal by tapping outside it or back button
    onBackButtonPress={()=>{props.setModalVisible(false)}} 
    animationIn={"slideInUp"}>  
      <View style={styles.infocard}>
          <View style={styles.titleBox}>
            <Text style={styles.header}>{drinkDetails.idDrink}</Text>
          </View>
      </View>
    </Modal>


  )
 

Ответ №1:

Попробуйте этот способ, например

 <Text style={styles.header}>
  {drinkDetails amp;amp; drinkDetails.idDrink
    ? JSON.stringify(drinkDetails.idDrink)
    : "No record"}
</Text>
 

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

1. Я получаю сообщение об ошибке no record, но я знаю, что этого не должно быть. Элемент, который должен искать код, определенно существует.

2. @Swystem что вы получаете в ответ json.drinks ?

3. Кажется, что выборка выполняется слишком часто, но она дает мне любой выбранный напиток, просто повторяется.

Ответ №2:

Попробуйте поместить вашу выборку в async функцию и вызвать ее, вероятно, в useEffect перехватчике.

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

1. Есть ли какая-либо доступная документация, чтобы показать мне, как это сделать? Я пытаюсь разобраться в этом, но, должно быть, я ищу неправильные термины. Я все еще новичок в React Native.