前提・実現したいこと
名前入力とカウンター回数をAsyncStorageに保存したいと考えています。
発生している問題・エラーメッセージ
ボタンを押すと'{this.state.counter}'で表示されている数字は正常にカウントされるのですが、
SimulatorをRefreshすると、0になってしまいます。
また名前を入力してもSimulatorをRefreshすると消えてしまいます。
エラーメッセージ
該当のソースコード
import React from 'react';
import { StyleSheet,
Text,
View,
KeyboardAvoidingView,
Platform,
TouchableOpacity,
AsyncStorage}from 'react-native';
import { Input} from 'react-native-elements';
import Button from "./components/Button";
const TASK = "@taskApp:task";
export default class App extends React.Component{
constructor(props){
super(props)
this.state = {
counter: 1,
inputText:"",
}
}
async componentDidMount(){
this.loadTask();}
saveTask = async(TASK, taskString) => {
try{
let taskString = JSON.stringify(this.state);
await AsyncStorage.setItem(TASK, taskString)
console.log(AsyncStorage);
} catch(e){
console.log(this.state);
}
}
loadTask = async(TASK) => {
try{
let taskString = await AsyncStorage.getItem(TASK);
if(taskString){
let task = JSON.parse(taskString);
this.setState({counter: Number(taskString)});
}
} catch(e){
console.log(e);
}
}
componentDidMount(){
this.setState({
counter: 0
})
}
plus = () => {
this.setState({
counter: this.state.counter + 1
})
}
minus = () => {
if( this.state.counter > 0 ){
this.setState({
counter: this.state.counter - 1
})
}}
reset = () => {
this.setState({
counter: this.state.counter = 0
})
};
render(){
// let taskList = this.state.taskList;
const platform = Platform.OS === 'ios' ? 'ios':'android';
return (
<KeyboardAvoidingView style={styles.container} behavior="padding">
<View style={styles.input}> <Input style={styles.inputText} onChangeText={(text) => this.setState({inputText: text})} value={this.state.inputText} /> </View> <Text style={styles.counter}>{this.state.counter}</Text> <View style={styles.btnWrap}> <Button text="+" function={this.plus} style={{backgroundColor: "blue"}} /> <Button text="-" function={this.minus} style={{backgroundColor: "red"}} /> <Button text='reset' function = {this.reset} style={{backgroundColor:"green"}}> </Button> </View> </KeyboardAvoidingView>);} }
ソースコード
試したこと
Refreshするとカウンターは0に戻ります。またテキスト入力が消えます。どうしてもAsyncStoregeに保存させる方法がわかりません。
続きからの数字を表示し、テキスト入力をAsyncStorageに保存したいです。
アドバイスいただけたら幸いです。 よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/21 00:54
2019/10/21 00:58