usuario1272965
Estoy usando una cosa llamada reaccionar-firebase-js para manejar la autenticación de base de fuego, pero mi comprensión de reaccionar y de la idea de proveedor-consumidor es limitada.
Comencé con una cosa JSX muy grande construida en el nivel superior, y eso funciona sin advertencias. Pero cuando intento dividirlo en componentes, aparece la advertencia que se muestra en el título y algunas otras.
Esto funciona sin previo aviso…
// in App.js component
render() {
return (
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<FirebaseAuthConsumer>
{({ isSignedIn, user, providerId }) => {
if (isSignedIn) {
return (
// ui for signed in user
);
} else {
if (this.state.confirmationResult) {
return (
// ui to get a phone number sign in
);
} else {
return (
// ui to verify sms code that was sent
);
}
}
}}
</FirebaseAuthConsumer>
</header>
);
}
Pero esto, mejor diseño, pensé, genera errores/advertencias…
// in App.js component
render() {
return (
<MuiThemeProvider>
<FirebaseAuthProvider {...config} firebase={firebase}>
<div className="App">
<IfFirebaseAuthed>
<p>You're authed buddy</p>
<RaisedButton label="Sign Out" onClick={this.signOutClick} />
</IfFirebaseAuthed>
<IfFirebaseUnAuthed>
<Authenticater /> // <-- this is the new component
</IfFirebaseUnAuthed>
</div>
</FirebaseAuthProvider>
</MuiThemeProvider>
);
}
// in my brand new Authenticator component...
render() {
return (
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<FirebaseAuthConsumer>
{({ isSignedIn, user, providerId }) => {
if (isSignedIn) {
return (
<div>
<pre style={{ height: 300, overflow: "auto" }}>
{JSON.stringify({ isSignedIn, user, providerId }, null, 2)}
</pre>
</div>
);
} else {
if (this.state.confirmationResult) {
return (
// ui to get a phone number sign in
);
} else {
return (
// ui to verify an sms code that was sent
);
}
}
}}
</FirebaseAuthConsumer>
</header>
);
}
Los errores/advertencias se ven así…
[Error] Advertencia: React no reconoce el
isSignedIn
prop en un elemento DOM. Si desea que aparezca intencionalmente en el DOM como un atributo personalizado, escríbalo en minúsculasissignedin
en cambio. Si lo pasó accidentalmente desde un componente principal, elimínelo del elemento DOM.[Error] Advertencia: React no reconoce el
providerId
prop en un elemento DOM. Si desea que aparezca intencionalmente en el DOM como un atributo personalizado, escríbalo en minúsculasproviderid
en cambio. Si lo pasó accidentalmente desde un componente principal, elimínelo del elemento DOM.[Error] Error: ¡No se pueden cargar las dependencias externas de reCAPTCHA! (función anónima) (0.chunk.js:1216) [Error] Error: el error que proporcionó no contiene un seguimiento de la pila.
¿Estoy malinterpretando cómo usar proveedores-consumidores, o hay un error en el código de react-firebase, o estoy haciendo algo mal? Gracias.
-
Lo mismo para mi. Por si acaso, aquí está la documentación para eso: componentes con estilo.com/docs/api#transient-props
– NK
13 ene a las 10:47
-
Este es un cambio importante cuando se actualiza a componentes con estilo 6+
– Salsa
24 abr a las 11:16
borrar
{JSON.stringify({ isSignedIn, user, providerId }, null, 2)}
y compruebe si el error sigue apareciendo– evgeni fotia
31 de enero de 2019 a las 20:37
@evgenifotia – gracias. lo probé y obtuve los mismos errores.
– usuario1272965
31/01/2019 a las 20:40
Cómo
FirebaseAuthProvider
¿está implementado?– SomoKRoceS
31 de enero de 2019 a las 22:18
Agregue el código FirebaseAuthProvider
– Shubham Jatri
5 de febrero de 2019 a las 6:40
Te sale el error porque pones
isSignedIn
yproviderId
en uno de los elementos DOM. Como esto:<h3 isSignedIn={...}>stuff</h3>
. Esto no es válido en reaccionar. Busca tu código con todos los casos en los que usas elisSignedIn
yproviderId
y asegúrese de que no estén directamente en un elemento HTML. Tiene que ser un componente de reacción. Puedes verlo en acción aqui códigosandbox.io/s/o4kn2vqj4q– Sam Uherek
5 de febrero de 2019 a las 9:29