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来帮助解决这个问题,但我不知道如何准确地实现它。
答案 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,
});