javascript - React Native - 使用 AsyncStorage 将数据存储在另一个屏幕中

标签 javascript react-native asyncstorage

我尝试使用 AsyncStorage 在我的应用程序中存储一些数据,但问题是每当我提交数据然后导航到第二个屏幕(应存储数据的位置)时,它都是空的。

navigation button

SendOrder Screen

这是我的代码

SendOrder.js

import Settlement from './Settlement';

export default class SendOrder extends React.Component {

state = {
    text: '',
    storedValue: '',
}

onSave = async () => {
    const { text } = this.state

    try {
        await AsyncStorage.setItem(key, text);
        Alert.alert('Saved', 'Successful');
    } catch (error) {
        Alert.alert('Error', 'There was an error.')
    }
}

onChange = (text) => {
    this.setState({ text });
}

  render() {
    return (
      <View>
        <View>
            <Text>- Noter -</Text>
        </View>
        <View>
            <TextInput
                onChangeText = {this.onChange}
                value = { this.state.text }>
            </TextInput>
        </View>
        <TouchableOpacity onPress = { this.onSave }>
            <Text style = { styles.addButtonText }> + </Text>
        </TouchableOpacity>    
      </View>
    );
  }
}

结算.js

import SendOrder from './SendOrder';
const key = '@MyApp:key';

export default class Settlement extends React.Component {

    state = {
        text: '',
        storedValue: '',
    }

    componentWillMount() {
        this.onLoad();
    }

    onLoad = async () => {
        try {
            const storedValue = await AsyncStorage.getItem(key);
        } catch (error) {
            Alert.alert('Error', 'There was an error.')
        }
    }

  render() {
      const { storedValue, text } = this.state;
    return (
        <View>
            <Text>{storedValue}</Text>
            <View>
                <TouchableOpacity onPress = {this.onLoad}>
                    <Text>Load Data</Text>
                </TouchableOpacity>
            </View>
        </View>
    );
  }
}

最佳答案

您需要将storedValue存储到onLoad内的状态中,例如

onLoad = async () => {
    try {
        const storedValue = await AsyncStorage.getItem(key);
        this.setState({ storedValue });
    } catch (error) {
        Alert.alert('Error', 'There was an error.')
    }
}

希望这会有所帮助!

关于javascript - React Native - 使用 AsyncStorage 将数据存储在另一个屏幕中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50545571/

相关文章:

react-native - 使用 react-native router-flux 时,BackHandler 在 react-native 侧菜单中不起作用

react-native - 如何将访问 token 从 API 存储到异步存储

react-native - React Native - 如何查看 AsyncStorage 中存储的内容?

javascript - 除非展开节点,否则 kendo treeview 数据源不会在 javascript 调试中显示子项

javascript - div 的左侧元素为空字符串

javascript - 检查跨度并删除第一个子项

react-native - React Native 插值超出最大调用堆栈大小

javascript - 有没有办法让输入框在用户按下回车键时运行某个功能?

android - 弹出的 React Native 应用程序无法到达 Firestore 后端

ios - React Native AsyncStorage 的位置和使用