переменная конкатенации в URL. - PullRequest
0 голосов
/ 12 мая 2018

Я не могу объединить состояние в URL. Искал, но я не мог найти решение, и я извиняюсь за то, что задал такой основной вопрос. Состояние имеет значение до того, как оно отправлено в качестве параметра в URL (я видел его в консоли), API возвращает ожидаемый результат, если я жестко закодирую значение, но если в качестве параметра передается состояние или даже переменная, возвращается ошибка : "Записей не найдено". Что я делаю не так?

   this.state.secid = this.props.navigation.state.params.secid
   console.log(this.state.secid)
   this.state.classid = this.props.navigation.state.params.clasid
   console.log(this.state.classid)

   // Sending Request
  fetch('exampleapi/parameter?
  class=${this.state.classid}&section=${this.state.secid}',{      
      headers:  {      
     'Content-Type':'application/json',
     'credentials': 'same-origin',
     'Accept': 'application/json',
     'Authorization': 'Bearer ' + tokenval  
    }  
    })
    .then((response) => response.json())
    .then((responseJson) => { 
      this.setState({ allstudents : responseJson })
      console.log(this.state.allstudents)
    })

Ответы [ 3 ]

0 голосов
/ 13 мая 2018

Из того, что я вижу в добавленном коде, конкатенация строк выполнена неправильно.Это должно быть сделано, как описано ниже:

this.state.secid = this.props.navigation.state.params.secid

this.state.classid = this.props.navigation.state.params.clasid

const requestURL = `exampleapi/parameterclass=${this.state.classid}&section=${this.state.secid}`

Затем я бы порекомендовал войти в систему и проверить, получаете ли вы URL-адрес, как ожидалось.Также я бы предложил придерживаться этого метода es6, а не использовать + для конкатенации (так как использование + более подвержено ошибкам, вы можете пропустить место, где это необходимо - в вашем случае это место, где вы устанавливаете заголовок авторизации).

Более того, почему бы не использовать хорошие вещи, когда они поддерживаются "из коробки", реагируя нативно

Некоторые ссылки:

https://developers.google.com/web/updates/2015/01/ES6-Template-Strings#string_substitution

https://facebook.github.io/react-native/docs/javascript-environment.html (поиск текста Литералы шаблона на странице).

0 голосов
/ 14 мая 2018

Я решил эту проблему, используя обратная нотация .Замена '' (одинарная кавычка) в URL на `` (обратные галочки).Если кто-то захочет прочитать больше о нотации backtick, это замечательный ответ: Какое использование символа backtick (`) в JavaScript?

0 голосов
/ 12 мая 2018

Вам необходимо внести следующие изменения в свой код

var url = 'exampleapi/parameter?class='+this.state.classid+'&section='this.state.secid;
fetch(url,{      
      headers:  {      
     'Content-Type':'application/json',
     'credentials': 'same-origin',
     'Accept': 'application/json',
     'Authorization': 'Bearer ' + tokenval  
    }  
    })

Конкатенация в реагирующем нативе выполняется оператором (+). В качестве URL также указывается строка.

Надеюсь, у вас это получится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...