React不会将道具传递给API链接

时间:2017-03-17 18:15:14

标签: javascript reactjs

http://codepen.io/beckbeach/pen/mWqrep我的代码

React不会在我的API链接中将道具传递给$ {this.state.query}。我做错了什么?

class App extends React.Component {                                  
constructor(props) {
super(props)
this.state = {
query: ''
  }
 }

 searchFunction() {
    fetch('http://api.openweathermap.org/data/2.5/weather?zip=${this.state.query},us&appid=748f643131acee33c207bee1a969f6e3', {
  method: 'GET'
}).then((res) => {
res.json().then((data) => {
  console.log(data);
  })
 })
    .catch((err) => {
      console.log(err);
  })
   }

 render() {
return (
  <div>
    <h1>Check The Weather!</h1>
    <div>
    <input type="text" placeholder="Enter Zipcode" value={this.state.query} onChange={event => {this.setState({query: event.target.value})}}  />
<button type="submit" onClick={() => this.searchFunction()}>CHECK WEATHER </button>
    </div>
  </div>
)}
}


ReactDOM.render(<App/>, document.getElementById('root'))

1 个答案:

答案 0 :(得分:3)

您使用单引号代替模板文字的后退标记。

top

应该是

'http://api.openweathermap.org/data/2.5/weather?zip=${this.state.query},us&appid=748f643131acee33c207bee1a969f6e3'

有关模板文字的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals

  

模板文字由反向标记(`http://api.openweathermap.org/data/2.5/weather?zip=${this.state.query},us&appid=748f643131acee33c207bee1a969f6e3` )(严重重音)括起来   字符而不是双引号或单引号。模板文字可以   包含占位符。这些由美元符号表示   花括号($ {expression})。地方持有人和表达者的表达   它们之间的文本传递给一个函数。默认功能   只需将部分连接成一个字符串即可。如果有的话   在模板文字(此处为标记)之前的表达式,模板   string被称为“标记模板文字”。在那种情况下,标签   使用已处理的表达式调用表达式(通常是函数)   模板文字,然后您可以在输出之前进行操作。至   在模板文字中转义后退,在前面加一个反斜杠\   背蜱。

工作笔http://codepen.io/finalfreq/pen/MpONrW