Configuración de un temporizador para un largo período de tiempo, es decir, varios minutos

3 minutos de lectura

avatar de usuario
Saeed Heidarizarei

Quiero usar firebase auth con react native para Login y Signup pero tengo un error amarillo:

Configurar un temporizador durante un largo período de tiempo, es decir, varios minutos, es un problema de rendimiento y corrección en Android, ya que mantiene activo el módulo del temporizador, y los temporizadores solo se pueden llamar cuando la aplicación está en primer plano. Ver (https://github.com/facebook/react-native/issues/12981) para más información. (Vi setTimeout con duración 111862ms)

¿Cómo puedo arreglar eso?

No quiero ignorar eso, quiero entender este error y resolverlo de la mejor manera y estándar.
Y este es mi código:

  export default class Login extends Component {
        constructor(props) {
            super(props)
            this.state = {
                email: '',
                password: '',
                response: ''
            }
            this.signUp = this.signUp.bind(this)
            this.login = this.login.bind(this)
        }
        async signUp() {
            try {
                await firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
                this.setState({
                    response: 'Account Created!'
                })
                setTimeout(() => {
                    this.props.navigator.push({
                        id: 'App'
                    })
                }, 1500)
            } catch (error) {
                this.setState({
                    response: error.toString()
                })
            }
        }
        async login() {
            try {
                await firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
                this.setState({
                    response: 'user login in'
                })
                setTimeout(() => {
                    this.props.navigator.push({
                        id: 'App'
                    })
                })

            } catch (error) {
                this.setState({
                    response: error.toString()
                })
            }

        }
        render() {
            return (
                <View style={styles.container}>
                    <View style={styles.containerInputes}>
                        <TextInput
                            placeholderTextColor="gray"
                            placeholder="Email"
                            style={styles.inputText}
                          //  onChangeText={(email) => this.setState({ email })}
                            onChangeText={(email) => {console.log(email);}}
                        />
                        <TextInput
                            placeholderTextColor="gray"
                            placeholder="Password"
                            style={styles.inputText}
                            password={true}
                            onChangeText={(password) => this.setState({ password })}
                        />
                    </View>
                    <TouchableHighlight
                        onPress={this.login}
                        style={[styles.loginButton, styles.button]}
                    >
                        <Text
                            style={styles.textButton}
                        >Login</Text>
                    </TouchableHighlight>
                    <TouchableHighlight
                        onPress={this.signUp}
                        style={[styles.loginButton, styles.button]}
                    >
                        <Text
                            style={styles.textButton}
                        >Signup</Text>
                    </TouchableHighlight>
                </View>
            )
        }
    }

me reporté a Equipo de Google Firebase: (https://github.com/firebase/firebase-js-sdk/issues/97)

  • Esta es solo una solución temporal ya que cuando cambia el node_modules archivos, solo está en su entorno local. ya que se supone que no debes confirmar los node_modules. Entonces, cada vez que un nuevo desarrollador configure el proyecto, tendrá que hacerlo nuevamente. Y esto no es un problema al final. Es solo una advertencia, y los desarrolladores de Firebase ya mencionaron que no lo cambiarán, ya que quieren que los desarrolladores sepan que su biblioteca usa esta implementación relacionada con el temporizador. –

    – Frederiko César

    7 abr a las 9:43

  • Esta debería ser la respuesta recomendada ya que otras soluciones han quedado obsoletas desde entonces.

    – ksingh

    15 de noviembre de 2020 a las 21:42

  • Ignorar los registros en realidad no solucionaría el problema real.

    -Pulkit Sharma

    23 de junio de 2021 a las 7:43

  • @PulkitSharma está de acuerdo contigo.

    – Ibad Shaikh

    17 de enero a las 4:13

  • Esto no es un problema al final. Es solo una advertencia, y los desarrolladores de Firebase ya mencionaron que no lo cambiarán, ya que quieren que los desarrolladores sepan que su biblioteca usa esta implementación relacionada con el temporizador.

    – Frederiko César

    7 abr a las 9:41

  • Para la consola, esto debería funcionar: console.ignoredYellowBox = ['Setting a timer'];

    – vijayst

    28 de diciembre de 2018 a las 13:17

  • ¿Alguna alternativa sin lodash?

    –Lucas Bustamante

    21 de febrero de 2019 a las 2:20

  • Definitivamente necesita clonado. Hay muchas formas de clonar objetos. Si está utilizando ES6, la siguiente lógica es equivalente const _console = { ...console };.

    – Arcilla Risser

    25 de febrero de 2019 a las 4:16

  • YellowBox es reemplazado por LogBox ahora.

    – atascado desbordamiento

    16 de agosto de 2021 a las 8:43

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad