在React Native中传递参数以获取url的正确方法?

时间:2018-02-06 23:36:16

标签: react-native react-redux

    componentDidMount() {
  var value =  AsyncStorage.getItem('name');
value.then((e)=>{
  this.setState({
   name: e.name
  })
})
const namme = encodeURIComponent(this.state.name);
      return fetch('http://www.example.com/user-list.php?name=${name}' , {
       method: 'POST',
       headers: {
         'Accept': 'application/json',
         'Content-Type': 'application/json',
       }

我还在学习React Native,我想知道这是否是在URL中传递参数的正确方法?我也听说过使用Redux来帮助解决这个问题,但我不知道如何准确地实现它。

2 个答案:

答案 0 :(得分:2)

这不正确。 AsyncStorage是一个与react native捆绑在一起的API,允许您将数据存储在用户的设备上。您可以在Facebook documentation上阅读更多相关信息。

你有点接近,但如果你想异步获取数据React Component lifecycle events的文档说使用componentDidMount()

以下是使用

获取远程数据的方法
componentDidMount() {
  const fetchConfig = {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    }
  };
  fetch(`http://www.example.com/user-list.php?name=${name}`, fetchConfig)
    .then(res => res.json())
    .then(e => {
      this.setState({ name: e.name });
    });
}

这里需要注意的几件事:url字符串使用的是反引号,而不是单引号。它被称为template literal

此外,fetch正在返回一个promise。 Fetch使您可以了解您的请求返回的数据类型。为了将JSON解析为JavaScript对象,您调用res.json(),它将向下一个then块返回一个承诺。一旦该承诺解决,您可以根据返回的对象设置您的状态。

答案 1 :(得分:1)

您是否尝试过+ this.state.name。

fetch('http://www.example.com/user-list.php?name='+this.state.text)
  //get status and append with data and return as one object
  .then(response =>  response.json())
  .then(responseobj => {
    this.setState({

     status:responseobj.msg,
   });