我是React Native的新手,正在尝试创建一个简单的iOS应用程序。该应用程序有一个单击按钮,我需要将单击设备的时间戳存储在文件中。
我知道 React Native 有一个名为 AsyncStorage
的 API,但我在使用时遇到错误。我从网络上的某个站点复制了代码。
有人可以指导我使用此 API 吗?
这是我的整个代码:
import React, {Component} from 'react';
import { StyleSheet, Text, View, TextInput, AsyncStorage } from 'react-native';
export default class App extends Component{
state = {
'name': ''
}
componentDidMount = () => AsyncStorage.getItem('name').then((value) => this.setState({'name': value}))
setName = (value) => {
AsyncStorage.setItem('name': value);
this.setState({'name': value});
}
render() {
return (
<View style={styles.container}>
<TextInput style = {styles.textInput} autoCapitalize = 'none'
onChangeText = {this.setName}/>
<Text>
{this.state.name}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
marginTop: 50
},
textInput: {
margin: 15,
height: 35,
borderWidth: 1,
backgroundColor: '#7685ed'
}
});
至于错误,当我在iOS上启动代码时,我看到一个红色屏幕。我看不到语法错误。
提前谢谢。
如果没有更多细节,很难说您面临的确切问题,但我认为以下一些可能会对您有所帮助?
啊,我看到你发布了一些代码。您还需要一个定义状态的构造函数。将其添加到下面的代码中。
请注意,我不是专家。原谅任何错误
import {
AsyncStorage,
} from 'react-native';
class myComponent extends React.Component{
constructor(props) {
super(props);
this.state = {
data: null
};
}
componentDidMount() {
this._loadInitialState().done();
}
_someFunction() {
var myData = 123;
saveItemLocally('data', myData);
}
async _loadInitialState() {
try {
// get localy stored data
var dataStored = await AsyncStorage.getItem('data');
if (dataStored!==null) {
this.setState({
data: dataStored
});
}
} catch (error) {
//didn't get locally stored data
console.log(error.message);
}
} // end _loadinitialstate
render () {
//your render function
return (
);
}
} // end of your component
async function saveItemLocally(item, value) {
try {
await AsyncStorage.setItem(item, value);
} catch (error) {
console.log('AsyncStorage error: ' + error.message);
}
}