मैं यह पता लगाने की कोशिश कर रहा हूं कि फायरबेस श्रोता का उपयोग कैसे किया जाए ताकि रिएक्शन हुक अपडेट के साथ क्लाउड फायरस्टार डेटा रीफ्रेश हो जाए।
प्रारंभ में, मैंने इसे फायरस्टार डेटा प्राप्त करने के लिए एक घटकडाइमाउंट फ़ंक्शन के साथ एक वर्ग घटक का उपयोग करके बनाया।
this.props.firebase.db
.collection('users')
// .doc(this.props.firebase.db.collection('users').doc(this.props.firebase.authUser.uid))
.doc(this.props.firebase.db.collection('users').doc(this.props.authUser.uid))
.get()
.then(doc => {
this.setState({ name: doc.data().name });
// loading: false,
});
}
जब पृष्ठ अपडेट होता है तो वह टूट जाता है, इसलिए मैं यह पता लगाने की कोशिश कर रहा हूं कि हुक को प्रतिक्रिया देने के लिए श्रोता को कैसे स्थानांतरित किया जाए।
मैंने प्रतिक्रिया-फायरबेस-हुक उपकरण स्थापित किया है - हालांकि मैं यह पता नहीं लगा सकता कि इसे कैसे प्राप्त करने के लिए निर्देशों को पढ़ने में सक्षम होना चाहिए।
मेरे पास फ़ंक्शन घटक निम्नानुसार है:
import React, { useState, useEffect } from 'react';
import { useDocument } from 'react-firebase-hooks/firestore';
import {
BrowserRouter as Router,
Route,
Link,
Switch,
useRouteMatch,
} from 'react-router-dom';
import * as ROUTES from '../../constants/Routes';
import { compose } from 'recompose';
import { withFirebase } from '../Firebase/Index';
import { AuthUserContext, withAuthorization, withEmailVerification, withAuthentication } from '../Session/Index';
function Dashboard2(authUser) {
const FirestoreDocument = () => {
const [value, loading, error] = useDocument(
Firebase.db.doc(authUser.uid),
//firebase.db.doc(authUser.uid),
//firebase.firestore.doc(authUser.uid),
{
snapshotListenOptions: { includeMetadataChanges: true },
}
);
return (
<div>
<p>
{error && <strong>Error: {JSON.stringify(error)}</strong>}
{loading && <span>Document: Loading...</span>}
{value && <span>Document: {JSON.stringify(value.data())}</span>}
</p>
</div>
);
}
}
export default withAuthentication(Dashboard2);
इस घटक को मार्ग स्तर पर एक ऑर्टसुपर आवरण में लपेटा गया है:
<Route path={ROUTES.DASHBOARD2} render={props => (
<AuthUserContext.Consumer>
{ authUser => (
<Dashboard2 authUser={authUser} {...props} />
)}
</AuthUserContext.Consumer>
)} />
मेरे पास एक firebase.js फ़ाइल है, जो इस प्रकार फायरस्टार में प्लग करता है:
class Firebase {
constructor() {
app.initializeApp(config).firestore();
/* helpers */
this.fieldValue = app.firestore.FieldValue;
/* Firebase APIs */
this.auth = app.auth();
this.db = app.firestore();
}
यह भी पता चलता है कि श्रोता कब बदलता है:
onAuthUserListener(next, fallback) {
// onUserDataListener(next, fallback) {
return this.auth.onAuthStateChanged(authUser => {
if (authUser) {
this.user(authUser.uid)
.get()
.then(snapshot => {
let snapshotData = snapshot.data();
let userData = {
...snapshotData, // snapshotData first so it doesn't override information from authUser object
uid: authUser.uid,
email: authUser.email,
emailVerified: authUser.emailVerifed,
providerData: authUser.providerData
};
setTimeout(() => next(userData), 0); // escapes this Promise's error handler
})
.catch(err => {
// TODO: Handle error?
console.error('An error occured -> ', err.code ? err.code + ': ' + err.message : (err.message || err));
setTimeout(fallback, 0); // escapes this Promise's error handler
});
};
if (!authUser) {
// user not logged in, call fallback handler
fallback();
return;
}
});
};
फिर, मेरे फायरबेस संदर्भ सेटअप में मेरे पास है:
import FirebaseContext, { withFirebase } from './Context';
import Firebase from '../../firebase';
export default Firebase;
export { FirebaseContext, withFirebase };
संदर्भ इस प्रकार के रूप में एक withFirebase आवरण में सेटअप है:
import React from 'react';
const FirebaseContext = React.createContext(null);
export const withFirebase = Component => props => (
<FirebaseContext.Consumer>
{firebase => <Component {...props} firebase={firebase} />}
</FirebaseContext.Consumer>
);
export default FirebaseContext;
तब, मेरे साथ HA के असंतोषन में, मेरे पास एक संदर्भ प्रदाता है:
import React from 'react';
import { AuthUserContext } from '../Session/Index';
import { withFirebase } from '../Firebase/Index';
const withAuthentication = Component => {
class WithAuthentication extends React.Component {
constructor(props) {
super(props);
this.state = {
authUser: null,
};
}
componentDidMount() {
this.listener = this.props.firebase.auth.onAuthStateChanged(
authUser => {
authUser
? this.setState({ authUser })
: this.setState({ authUser: null });
},
);
}
componentWillUnmount() {
this.listener();
};
render() {
return (
<AuthUserContext.Provider value={this.state.authUser}>
<Component {...this.props} />
</AuthUserContext.Provider>
);
}
}
return withFirebase(WithAuthentication);
};
export default withAuthentication;
वर्तमान में - जब मैं यह कोशिश करता हूं, मुझे डैशबोर्ड 2 घटक में एक त्रुटि मिलती है जो कहती है:
फायरबेस ’परिभाषित नहीं है
मैंने फायरबेस को कम करने और उसी त्रुटि को प्राप्त करने की कोशिश की।
मैंने Firebase.firestore और Firebase.firestore भी आज़माया। मुझे समान त्रुटि मिली।
मैं सोच रहा था कि क्या मैं एक फ़ंक्शन घटक के साथ अपने HOC का उपयोग नहीं कर सकता हूं?
मैंने इस डेमो ऐप और इस ब्लॉग पोस्ट को देखा है ।
ब्लॉग में सलाह के बाद, मैंने एक नया फायरबेस / रेफरेंस बनाया।
import React, { useEffect, useContext } from 'react';
import Firebase from '../../firebase';
export const userContext = React.createContext({
user: null,
})
export const useSession = () => {
const { user } = useContext(userContext)
return user
}
export const useAuth = () => {
const [state, setState] = React.useState(() =>
{ const user = firebase.auth().currentUser
return { initializing: !user, user, }
}
);
function onChange(user) {
setState({ initializing: false, user })
}
React.useEffect(() => {
// listen for auth state changes
const unsubscribe = firebase.auth().onAuthStateChanged(onChange)
// unsubscribe to the listener when unmounting
return () => unsubscribe()
}, [])
return state
}
फिर मैं उस पाठक के साथ अपना App.jsx लपेटने की कोशिश करता हूं:
function App() {
const { initializing, user } = useAuth()
if (initializing) {
return <div>Loading</div>
}
// )
// }
// const App = () => (
return (
<userContext.Provider value={{ user }}>
<Router>
<Navigation />
<Route path={ROUTES.LANDING} exact component={StandardLanding} />
जब मैं यह कोशिश करता हूं, मुझे एक त्रुटि मिलती है जो कहती है:
TypeError: _firebase__WEBPACK_IMPORTED_MODULE_2 __। Default.auth कोई फ़ंक्शन नहीं है।
मैंने इस पोस्ट को उस त्रुटि से निपटते देखा है और यार्न को अनइंस्टॉल करने और पुन: स्थापित करने का प्रयास किया है। इससे कोई फ़र्क नहीं पड़ता।
जब मैं डेमो ऐप को देखता हूं , तो यह सुझाव देता है कि 'इंटरफ़ेस' विधि का उपयोग करके संदर्भ बनाया जाना चाहिए। मैं यह नहीं देख सकता कि यह कहां से आ रहा है - मैं इसे प्रलेखन में समझाने के लिए एक संदर्भ नहीं पा सकता हूं।
मैं इसे प्लग इन करने के लिए मैंने क्या किया है, इसके अलावा अन्य निर्देशों की समझ नहीं बना सकता।
मैंने इस पोस्ट को देखा है जो प्रतिक्रिया-फायरबेस-हुक का उपयोग किए बिना फायरस्टार को सुनने का प्रयास करता है। जवाब इस उपकरण का उपयोग करने के तरीके का पता लगाने की कोशिश करते हैं।
मैंने इस उत्कृष्ट व्याख्या को पढ़ा है जो HOCs से हुक तक जाने का तरीका बताता है। मैं कैसे फायरबेस श्रोता को एकीकृत करने के साथ फंस गया हूँ।
मैंने इस पोस्ट को देखा है जो ऐसा करने के बारे में सोचने के लिए एक सहायक उदाहरण प्रदान करता है। निश्चित नहीं है कि क्या मुझे ऑरलिस्टस्टनर कंपोनेंटडीडमाउंट में ऐसा करने की कोशिश करनी चाहिए - या डैशबोर्ड घटक जो इसे इस्तेमाल करने की कोशिश कर रहा है।
NEXT ATTEMPT मैंने यह पोस्ट पाया , जो इसी समस्या को हल करने की कोशिश कर रहा है।
जब मैं शुभम खत्री द्वारा प्रस्तुत समाधान को लागू करने की कोशिश करता हूं, तो मैं फायरबेस कॉन्फ़िगरेशन को निम्नानुसार सेट करता हूं:
के साथ एक संदर्भ प्रदाता: 'प्रतिक्रिया' से आयात प्रतिक्रिया, {useContext}; आयात फायरबेस से '../../firebase';
const FirebaseContext = React.createContext();
export const FirebaseProvider = (props) => (
<FirebaseContext.Provider value={new Firebase()}>
{props.children}
</FirebaseContext.Provider>
);
संदर्भ हुक तब है:
import React, { useEffect, useContext, useState } from 'react';
const useFirebaseAuthentication = (firebase) => {
const [authUser, setAuthUser] = useState(null);
useEffect(() =>{
const unlisten =
firebase.auth.onAuthStateChanged(
authUser => {
authUser
? setAuthUser(authUser)
: setAuthUser(null);
},
);
return () => {
unlisten();
}
});
return authUser
}
export default useFirebaseAuthentication;
इसके बाद index.js में मैं प्रदाता के रूप में ऐप को लपेटता हूं:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App/Index';
import {FirebaseProvider} from './components/Firebase/ContextHookProvider';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(
<FirebaseProvider>
<App />
</FirebaseProvider>,
document.getElementById('root')
);
serviceWorker.unregister();
फिर, जब मेरे पास मेरे घटक में श्रोता का उपयोग करने का प्रयास होगा:
import React, {useContext} from 'react';
import { FirebaseContext } from '../Firebase/ContextHookProvider';
import useFirebaseAuthentication from '../Firebase/ContextHook';
const Dashboard2 = (props) => {
const firebase = useContext(FirebaseContext);
const authUser =
useFirebaseAuthentication(firebase);
return (
<div>authUser.email</div>
)
}
export default Dashboard2;
और मैं इसे एक घटक के रूप में उपयोग करने का प्रयास करता हूं जिसमें कोई घटक या सामान्य आवरण नहीं है:
<Route path={ROUTES.DASHBOARD2} component={Dashboard2} />
जब मैं यह कोशिश करता हूं, मुझे एक त्रुटि मिलती है जो कहती है:
आयात की गई त्रुटि: 'FirebaseContext' को '../irebase/ContextHookProvider' से निर्यात नहीं किया गया है।
वह त्रुटि संदेश समझ में आता है, क्योंकि ContextHookProvider FirebaseContext को निर्यात नहीं करता है - यह FirebaseProvider को निर्यात करता है - लेकिन अगर मैं डैशबोर्ड 2 में इसे आयात करने का प्रयास नहीं करता - तो मैं इसे उस फ़ंक्शन तक नहीं पहुंचा सकता जो इसे उपयोग करने का प्रयास नहीं करता है।
इस प्रयास का एक दुष्प्रभाव यह है कि मेरा साइन अप तरीका अब काम नहीं करता है। अब यह एक त्रुटि संदेश उत्पन्न करता है जो कहता है:
TypeError: null की संपत्ति 'doCreateUserWithEmailAndPassword' नहीं पढ़ सकता है
मैं इस समस्या को बाद में हल करूँगा- लेकिन फायरबेस के साथ प्रतिक्रिया का उपयोग करने के तरीके का पता लगाने का एक तरीका होना चाहिए जिसमें लाखों लूप के माध्यम से इस लूप के महीनों को शामिल नहीं किया जाता है जो एक बुनियादी स्थिति सेटअप प्राप्त करने के लिए काम नहीं करते हैं। क्या फायरबेस (फायरस्टार) के लिए स्टार्टर किट है जो प्रतिक्रिया हुक के साथ काम करता है?
अगला प्रयास मैंने इस udemy कोर्स में दृष्टिकोण का पालन करने की कोशिश की - लेकिन यह केवल एक फॉर्म इनपुट उत्पन्न करने के लिए काम करता है - प्रामाणिक उपयोगकर्ता के साथ समायोजित करने के लिए मार्गों के चारों ओर रखने के लिए कोई श्रोता नहीं है।
मैंने इस youtube ट्यूटोरियल में दृष्टिकोण का पालन करने की कोशिश की - जिसमें इस रेपो से काम करना है। यह दिखाता है कि हुक का उपयोग कैसे करें, लेकिन संदर्भ का उपयोग कैसे करें।
अगला ATTEMPT मुझे यह रेपो मिला जो लगता है कि फायरस्टार के साथ हुक का उपयोग करने के लिए एक अच्छा विचार है। हालाँकि, मैं कोड की समझ नहीं बना सकता।
मैंने इसे क्लोन किया - और सभी सार्वजनिक फ़ाइलों को जोड़ने की कोशिश की और फिर जब मैंने इसे चलाया - मुझे वास्तव में संचालित करने के लिए कोड नहीं मिल सकता है। मुझे यकीन नहीं है कि यह देखने के लिए निर्देशों से गायब नहीं है कि इसे कैसे चलाया जाए ताकि यह देखने के लिए कि क्या कोड में सबक हैं जो इस समस्या को हल करने में मदद कर सकते हैं।
अगले ATTEMPT
मैंने दिव्य टेम्पलेट खरीदा है, जिसे फायरबेस के लिए सेटअप के रूप में विज्ञापित किया गया है (यह फायरस्टार के लिए सेटअप नहीं है, अगर कोई और इसे विकल्प के रूप में विचार कर रहा है)।
वह टेम्पलेट एक एप्पल रैपर का प्रस्ताव करता है जो ऐप के कॉन्फ़िगरेशन को इनिशियलाइज़ करता है - लेकिन सिर्फ़ ऑर्कुटिकल मेथड्स के लिए - इसलिए इसे फायरस्टार के लिए एक अन्य संदर्भ प्रदाता की अनुमति देने के लिए रिस्ट्रक्चर करना होगा। जब आप उस प्रक्रिया से गुजरते हैं और इस पोस्ट में दिखाई गई प्रक्रिया का उपयोग करते हैं , तो जो कुछ बचा है वह निम्नलिखित कॉलबैक में त्रुटि है:
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setUser(user);
} else {
setUser(false);
}
});
यह नहीं पता है कि फायरबेस क्या है। ऐसा इसलिए है क्योंकि इसे फायरबेस संदर्भ प्रदाता में परिभाषित किया गया है जिसे आयात और परिभाषित किया गया है (उपयोगप्रोवाइडऑथ () फ़ंक्शन) में निम्नानुसार है:
const firebase = useContext(FirebaseContext)
कॉलबैक के अवसरों के बिना, त्रुटि कहती है:
रिएक्ट हुक का उपयोग करें एक लापता निर्भरता है: 'फायरबेस'। या तो इसे शामिल करें या निर्भरता सरणी को हटा दें
या, यदि मैं कॉलबैक में उस कास्ट को जोड़ने की कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है जो कहती है:
रिएक्ट हुक "यूज़ कॉन्टेक्स्ट" को कॉलबैक के अंदर नहीं बुलाया जा सकता है। रिएक्ट हुक को रिएक्ट फ़ंक्शन घटक या एक कस्टम रिएक्ट हुक फ़ंक्शन में कहा जाना चाहिए
अगले ATTEMPT
मैंने अपनी फ़ायरबॉस् कॉन्फिगर फ़ाइल को केवल कॉन्फिगर वेरिएबल्स में घटा दिया है (मैं प्रत्येक संदर्भ के लिए संदर्भ प्रदाताओं में हेल्पर्स लिखूंगा जो मैं उपयोग करना चाहता हूं)।
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
const devConfig = {
apiKey: process.env.REACT_APP_DEV_API_KEY,
authDomain: process.env.REACT_APP_DEV_AUTH_DOMAIN,
databaseURL: process.env.REACT_APP_DEV_DATABASE_URL,
projectId: process.env.REACT_APP_DEV_PROJECT_ID,
storageBucket: process.env.REACT_APP_DEV_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_DEV_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_DEV_APP_ID
};
const prodConfig = {
apiKey: process.env.REACT_APP_PROD_API_KEY,
authDomain: process.env.REACT_APP_PROD_AUTH_DOMAIN,
databaseURL: process.env.REACT_APP_PROD_DATABASE_URL,
projectId: process.env.REACT_APP_PROD_PROJECT_ID,
storageBucket: process.env.REACT_APP_PROD_STORAGE_BUCKET,
messagingSenderId:
process.env.REACT_APP_PROD_MESSAGING_SENDER_ID,
appId: process.env.REACT_APP_PROD_APP_ID
};
const config =
process.env.NODE_ENV === 'production' ? prodConfig : devConfig;
class Firebase {
constructor() {
firebase.initializeApp(config);
this.firebase = firebase;
this.firestore = firebase.firestore();
this.auth = firebase.auth();
}
};
export default Firebase;
मेरे पास एक संदर्भ संदर्भ प्रदाता इस प्रकार है:
import React, { useState, useEffect, useContext, createContext } from "react";
import Firebase from "../firebase";
const authContext = createContext();
// Provider component that wraps app and makes auth object ...
// ... available to any child component that calls useAuth().
export function ProvideAuth({ children }) {
const auth = useProvideAuth();
return <authContext.Provider value={auth}>{children}</authContext.Provider>;
}
// Hook for child components to get the auth object ...
// ... and update when it changes.
export const useAuth = () => {
return useContext(authContext);
};
// Provider hook that creates auth object and handles state
function useProvideAuth() {
const [user, setUser] = useState(null);
const signup = (email, password) => {
return Firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then(response => {
setUser(response.user);
return response.user;
});
};
const signin = (email, password) => {
return Firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then(response => {
setUser(response.user);
return response.user;
});
};
const signout = () => {
return Firebase
.auth()
.signOut()
.then(() => {
setUser(false);
});
};
const sendPasswordResetEmail = email => {
return Firebase
.auth()
.sendPasswordResetEmail(email)
.then(() => {
return true;
});
};
const confirmPasswordReset = (password, code) => {
// Get code from query string object
const resetCode = code || getFromQueryString("oobCode");
return Firebase
.auth()
.confirmPasswordReset(resetCode, password)
.then(() => {
return true;
});
};
// Subscribe to user on mount
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setUser(user);
} else {
setUser(false);
}
});
// Subscription unsubscribe function
return () => unsubscribe();
}, []);
return {
user,
signup,
signin,
signout,
sendPasswordResetEmail,
confirmPasswordReset
};
}
const getFromQueryString = key => {
return queryString.parse(window.location.search)[key];
};
मैंने एक फायरबेस संदर्भ प्रदाता भी इस प्रकार बनाया है:
import React, { createContext } from 'react';
import Firebase from "../../firebase";
const FirebaseContext = createContext(null)
export { FirebaseContext }
export default ({ children }) => {
return (
<FirebaseContext.Provider value={ Firebase }>
{ children }
</FirebaseContext.Provider>
)
}
फिर, index.js में मैं ऐप को फायरबेस प्रदाता में लपेटता हूं
ReactDom.render(
<FirebaseProvider>
<App />
</FirebaseProvider>,
document.getElementById("root"));
serviceWorker.unregister();
और मेरी मार्गों की सूची में, मैंने संबंधित प्रदाता में संबंधित मार्गों को लपेटा है:
import React from "react";
import IndexPage from "./index";
import { Switch, Route, Router } from "./../util/router.js";
import { ProvideAuth } from "./../util/auth.js";
function App(props) {
return (
<ProvideAuth>
<Router>
<Switch>
<Route exact path="/" component={IndexPage} />
<Route
component={({ location }) => {
return (
<div
style={{
padding: "50px",
width: "100%",
textAlign: "center"
}}
>
The page <code>{location.pathname}</code> could not be found.
</div>
);
}}
/>
</Switch>
</Router>
</ProvideAuth>
);
}
export default App;
इस विशेष प्रयास पर, मैं इस त्रुटि के साथ पहले चिह्नित की गई समस्या पर वापस आ गया हूं:
TypeError: _firebase__WEBPACK_IMPORTED_MODULE_2 __। Default.auth कोई फ़ंक्शन नहीं है।
यह समस्या पैदा करने के रूप में मुख्य प्रदाता की इस पंक्ति को इंगित करता है:
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setUser(user);
} else {
setUser(false);
}
});
मैंने फायरबेस में पूंजीकृत एफ का उपयोग करने की कोशिश की है और यह उसी त्रुटि को उत्पन्न करता है।
जब मैं ट्रिस्टन की सलाह लेने की कोशिश करता हूं, तो मैं उन सभी चीजों को हटा देता हूं और अपने अनसब्सक्राइब विधि को एक अनलिस्ट विधि के रूप में परिभाषित करने की कोशिश करता हूं (मुझे नहीं पता कि वह फायरबेस भाषा का उपयोग क्यों नहीं कर रहा है - लेकिन अगर उसके दृष्टिकोण ने काम किया है, तो मैं और अधिक प्रयास करूंगा। यह जानने के लिए क्यों)। जब मैं उसके समाधान का उपयोग करने की कोशिश करता हूं, तो त्रुटि संदेश कहता है:
TypeError: _util_contexts_Firebase__WEBPACK_IMPORTED_MODULE_8 ___ डिफ़ॉल्ट (...) एक फ़ंक्शन नहीं है
इस पोस्ट का उत्तर ऑर्टिकल के बाद हटाने () से पता चलता है। जब मैं कोशिश करता हूं, तो मुझे एक त्रुटि मिलती है जो कहती है:
TypeError: अपरिभाषित की संपत्ति 'onAuthStateChanged' नहीं पढ़ सकता है
हालाँकि यह पोस्ट सुझाव फ़ाइल में जिस तरह से फायरबेस आयात किया गया है, के साथ एक समस्या का सुझाव देता है।
मेरे पास इसे आयात किया गया है: "../firebase" से फायरबेस आयात करें;
फायरबेस क्लास का नाम है।
ट्रिस्टन द्वारा सुझाए गए वीडियो सहायक पृष्ठभूमि हैं, लेकिन मैं वर्तमान में 9 एपिसोड पर हूं और अभी भी वह हिस्सा नहीं मिला है जो इस समस्या को हल करने में मदद करने वाला है। क्या किसी को पता है कि कहाँ मिल रहा है?
अगला ATTEMPT अगला - और केवल संदर्भ समस्या को हल करने की कोशिश कर रहा है - मैंने दोनों createContext और useContext को आयात किया है और उन्हें इस प्रलेखन में दिखाए अनुसार उपयोग करने का प्रयास किया है।
मैं यह नहीं कह सकता कि एक त्रुटि हुई:
त्रुटि: अमान्य हुक कॉल। हुक केवल एक फ़ंक्शन घटक के शरीर के अंदर कहा जा सकता है। यह निम्न कारणों में से एक के लिए हो सकता है: ...
मैं इस लिंक में सुझावों के माध्यम से इस समस्या को हल करने की कोशिश कर रहा हूं और इसका पता नहीं लगा सकता। मुझे इस मुसीबत की शूटिंग गाइड में दिखाई गई समस्याओं में से कोई भी नहीं है।
वर्तमान में - संदर्भ कथन इस प्रकार है:
import React, { useContext } from 'react';
import Firebase from "../../firebase";
export const FirebaseContext = React.createContext();
export const useFirebase = useContext(FirebaseContext);
export const FirebaseProvider = props => (
<FirebaseContext.Provider value={new Firebase()}>
{props.children}
</FirebaseContext.Provider>
);
मैंने इस समस्या के संदर्भ और हुक तत्व का पता लगाने के लिए इस udemy कोर्स का उपयोग करते हुए समय बिताया - इसे देखने के बाद - नीचे ट्रिस्टन द्वारा प्रस्तावित समाधान का एकमात्र पहलू यह है कि createContext विधि को उसके पोस्ट में सही ढंग से नहीं कहा जाता है। यह "React.createContext" होना चाहिए, लेकिन यह अभी भी समस्या को हल करने के करीब कहीं भी नहीं मिलता है।
मैं अभी भी अटका हुआ हूं।
क्या कोई देख सकता है कि यहाँ क्या हो रहा है?
export
है export const FirebaseContext
?