Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何从URL获取数据,然后将其存储在React Native的AsyncStorage中?_Json_React Native_Fetch_Asyncstorage - Fatal编程技术网

Json 如何从URL获取数据,然后将其存储在React Native的AsyncStorage中?

Json 如何从URL获取数据,然后将其存储在React Native的AsyncStorage中?,json,react-native,fetch,asyncstorage,Json,React Native,Fetch,Asyncstorage,我正在尝试从URL获取数据,然后将其存储在React Native中的AsyncStorage中 这是发生“魔法”的屏幕: 我找不到任何类似的解决方案,所以如果有人有教程可以帮我解决这个问题,我将不胜感激 编辑(更多解释): 这就是我想做的: 如果设备已连接到internet,请使用URL中的数据更新AsyncStorage,然后在AsyncStorage中显示新数据。如果设备未连接到internet,则只显示异步存储的数据。并且有多个“事件”,而不仅仅是示例中的一个事件。您需要像这样存储响应

我正在尝试从URL获取数据,然后将其存储在React Native中的AsyncStorage中

这是发生“魔法”的屏幕:

我找不到任何类似的解决方案,所以如果有人有教程可以帮我解决这个问题,我将不胜感激

编辑(更多解释):

这就是我想做的:
如果设备已连接到internet,请使用URL中的数据更新AsyncStorage,然后在AsyncStorage中显示新数据。如果设备未连接到internet,则只显示异步存储的数据。并且有多个“事件”,而不仅仅是示例中的一个事件。

您需要像这样存储响应

请注意,当您将值设置为
AsyncStorage
时,需要将值存储为string
JSON.stringify()
value

    onSave = async () => {
           try {
                await AsyncStorage.setItem("key", JSON.stringify(responseData));
                Alert.alert('Saved', 'Successful');
            } catch (error) {
                Alert.alert('Error', 'There was an error.')
            }
        }
当您从
AsyncStorage
获取值时,您需要
JSON.parse()

希望它能帮助你
导出默认类BankDetails扩展组件{
建造师(道具){
超级(道具)
此.state={
userToken:null,
用户数据:{
银行名称:'',
帐号:'',
帐户持有人名称:“”
}
}
}
异步组件didmount(){
试一试{
让value=await AsyncStorage.getItem('userData'))
让userDetails=JSON.parse(值)
if(userDetails!==null){
让userData=Object.assign({},this.state.userData)
userData.nameOfBank=userDetails.nameOfBank
userData.account\u number=userDetails.account\u number
userData.account\u holder\u ame=userDetails.account\u holder\u ame
这是我的国家({
userToken:userDetails.token,
用户数据
})
}
}捕获(错误){
console.log(错误)
}
} 
onBankChange=(银行名称)=>{
this.setState({userData:{…this.state.userData,nameOfBank:nameOfBank}})
}
saveBankDetailsEdit=()=>{
const{nameOfBank,account_number,account_holder_ame}=this.state.userData
让{userToken}=this.state
var formData=new formData()
formData.append('银行',银行名称)
formData.append('科目编号',科目编号)
formData.append('账户名称',账户持有人名称)
取('http://xxxx/update', {
方法:“POST”,
标题:{
“X-API-KEY”:“123456”,
“授权”:userToken
},
正文:formData
}).然后(功能(响应){
console.log(响应)
AsyncStorage.getItem('userData')。然后(
数据=>{
data=JSON.parse(数据)
data.nameOfBank=银行名称
data.account\u number=账号
data.account\u holder\u ame=帐户\u holder\u ame
AsyncStorage.setItem('userData',JSON.stringify(数据))
}
)
让data=JSON.parse(response.\u bodyText)
警报。警报(数据。消息)
})
.catch((错误)=>{
console.log(错误)
})
.完成

}
谢谢,你能告诉我怎么做吗?在React Native的文档中可以找到相同的示例。我希望得到更详细的解释,比如如何存储多个事件(与示例中的一个相同)在存储器中并显示它。我应该把那部分代码放在哪里。这看起来像funcinos,你可以按一下按钮,但我需要在获取后设置Items,然后再设置getItems。我有一个结构,每个事件应该如何打印元素,我希望多个事件(而不仅仅是一个)的打印方式相同,但使用来自AsyncStorage的数据,而不是直接来自URL的数据。其想法是在屏幕上显示所有事件,但可以选择更新它们。您可以利用来完成此操作。这就是我要做的:如果设备连接到internet,则使用来自URL的数据更新AsyncStorage,然后在AsyncStorage中显示新数据。如果设备未连接到internet,则ternet,只显示异步存储的数据。并且有多个“事件”,而不仅仅是示例中的一个。
[
    {
        "type": "Party",
        "title": "New party comming to town!",
        "adress": "New Yrok",
        "date": "20. 4. 2019.",
        "image": "https:\/\/some-url.com\/some-image.jpg",
        "text": [
            "Some description"
        ],
        "_id": "events_1"
    }
]
    onSave = async () => {
           try {
                await AsyncStorage.setItem("key", JSON.stringify(responseData));
                Alert.alert('Saved', 'Successful');
            } catch (error) {
                Alert.alert('Error', 'There was an error.')
            }
        }
onSave = async () => {
    try {
                const storedValue = await AsyncStorage.getItem("key");
                this.setState({ storedValue: JSON.parse(storedValue) });
            } catch (error) {
                Alert.alert('Error', 'There was an error.')
            }
}