在fetch

时间:2018-01-26 08:22:23

标签: javascript reactjs react-native fetch-api

我很反应原生态。我在我的react-native应用程序中使用react navigation。我正在将一些道具从一个屏幕传递到另一个屏幕,我需要在我尝试在componentDidMount生命周期方法中执行的fetch中使用其中一个道具。对于我尝试过的所有内容,它会发送“type”键的值,但它不会为“location”键发送任何内容(请参阅下面的代码)。有人可以帮助我解决我错过或做错的事吗?我已经尝试了几件事来通过道具,但还没有任何工作。

  componentDidMount() {
    const { params } = this.props.navigation.state;
    var data = {
      type: 'r',
      location: params.location
    }
    return fetch('http://myapisite', {
          method: 'POST',
          headers: {
            Accept: 'application/json',
            'Content-Type': 'application/json',
          },
          body: JSON.stringify(data)
        }
      )
      .then((response) => response.json())
      .then((responseJson) => {
        this.setState({
          isLoading: false,
          dataSource: responseJson,
        }, function() {
          // do something with new state
        });
      })
      .catch((error) => {
        console.error(error);
      });
  }

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题。我不是百分之百确定为什么我没有工作,但是当我把它改成以下时,它按预期工作:

const {state} = this.props.navigation;
var data = {
  type: 'restaurant',
  location: state.params.location
}
return fetch('http://mylink', {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(data)
    }
  )
  .then((response) => response.json())
  .then((responseJson) => {
    this.setState({
      isLoading: false,
      dataSource: responseJson,
    }, function() {
      // do something with new state
    });
  })
  .catch((error) => {
    console.error(error);
  });