反应函数没有定义no-undef

Cod*_*opf 13 reactjs

尝试编译我的应用程序时出现以下错误 - 'getRestaurants'未定义no-undef

我无法追踪为什么没有为zipCodeToCoords定义getRestaurants

我有一个输入组件,提交邮政编码并调用zipCodeToCoords,然后我想调用getRestaurants

这是主要的反应成分

class App extends Component {
  constructor(props){
    super(props);
    this.state = {
      restraunts:[],
      selectedRestraunt:null
    }
  }


  getRestaurants(lat,lon){
    var url = "https://developers.zomato.com/api/v2.1/geocode?lat="+lat+"&lon="+lon;
    $.ajax({
      url:url,
      headers:{
        'Accept': 'application/json',
        'user_key': 'MY KEY'
      }

    }).done(function(data){
      console.log(data);
    });
  }


  zipCodeToCoords(zip){
    var url = "https://www.zipcodeapi.com/rest/MYKEY/info.json/"+ zip +"/degrees";
    $.ajax({
      url:url,

    }).done(function(data){
      console.log(data.lat);
      getRestaurants(data.lat,data.lng);
    });
  }




  render() {
    return (
      <div className="App">
        <div className="row">
          <div className="columns large-9">
            <Input onSearchTermSubmit={this.zipCodeToCoords} />
          </div>  
        </div>
        <div className="row">
          <div className="columns large-9">
            <RestrauntInfo />
          </div>
          <div className="columns large-3">
            <RestrauntList />
          </div>
        </div>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这是输入组件

class Input extends Component{

    constructor(props){
        super(props);
        this.state = {zip:''};

        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
    }


    handleSubmit(event){
        event.preventDefault();
        this.props.onSearchTermSubmit(this.state.zip);
    }
    handleChange(event){
        this.setState({zip:event.target.value});

    }

    render(){
        return(<div>
            <form onSubmit={this.handleSubmit}>
                <div className="input-group">
                    <span className="input-group-label">Enter Zip Code</span>
                    <input className="input-group-field" type="number" value={this.state.zip} onChange={this.handleChange} />
                    <div className="input-group-button">
                      <input type="submit" className="button" value="Submit" />
                    </div>
                </div>  
            </form> 
        </div>);
    }
}
Run Code Online (Sandbox Code Playgroud)

Exo*_*imp 22

获取餐馆不是一些全局功能,它是您的App类上的一种方法,因此您需要这样调用它.解决这个问题的最简单方法可能是:

  1. 将完成的回调更改为箭头功能
  2. 通话this.getRestaurantszipCodeToCoords
  3. 绑定thisgetRestaurantszipCodeToCoords在构造函数即this.getRestaurants = this.getRestaurants.bind(this);

回调将变为:

done((data) => {
    console.log(data.lat);
    this.getRestaurants(data.lat,data.lng);
});
Run Code Online (Sandbox Code Playgroud)