Я пытаюсь отобразить модальное на устройстве только в первый раз, когда приложение открывается на этом устройстве - PullRequest
1 голос
/ 25 сентября 2019

Начиная с текущего запуска мой код будет отображать модальные значения при каждом открытии приложения, и я думаю, что это связано с начальным состоянием "modalVisibility"

Имеет "const [modalVisibility, setModalVisibility] = useState(правда);"вызывать каждый раз при запуске приложения?Если это так, то это проблема.

Это проблема с модальным свойством "onShow"?

import React, { useState, useEffect } from 'react';
import { StatusBar, StyleSheet, View, Modal, Text, Button, ScrollView, AsyncStorage } from 'react-native';

export default App = (props) => {

 const [modalVisibility, setModalVisibility] = useState(true);
        const checkIfNeedOpenModal = async () => {
            try {
                const isFirstOpen = await AsyncStorage.getItem('modal');
                if (!isFirstOpen || isFirstOpen !== 'true') {
                    setModalVisibility(true);
                }
            } catch (error) {
                alert(error);
            }
        }

        const saveModalOpen = async () => {
            try {
                await AsyncStorage.setItem('modal', 'true');
            } catch (error) {
                alert(error);
            }
        }
        const onModalShow = () => {
            saveModalOpen();
        }

    useEffect(() => {
        checkIfNeedOpenModal();
    });
return (
        <View style={styles.container}>
            <Modal
                animationType='slide'
                onShow={saveModalOpen}
                transparent={true}
                visible={modalVisibility}
                onRequestClose={() => {
                    alert('closed');
                }}
            >
                <View style={styles.modal}>

                    <ScrollView style={[styles.scrollview, { flex: 1 }]}>
                        <Text>placeholder text</Text>
                    </ScrollView>

                    <View style={{ flexDirection: 'row', justifyContent: 'space-evenly' }}>
                        <Button
                            title="deny"
                            onPress={() => alert('you must accept the privacy policy to play')}
                        />
                        <Button
                            title="accept"
                            onPress={() => setModalVisibility(false)}
                        />
                    </View>
                </View>
            </Modal>
       </View>
   );
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...