আমি ফায়ারবেস শ্রোতাদের কীভাবে ব্যবহার করব তা জানার চেষ্টা করছি যাতে ক্লাউড ফায়ারস্টোরের ডেটা রিয়েক্ট হুক আপডেটের সাথে সতেজ হয়।
প্রাথমিকভাবে, আমি ফায়ার স্টোর ডেটা পাওয়ার জন্য একটি কম্পোনেন্টডিডমাউন্ট ফাংশন সহ একটি শ্রেণি উপাদান ব্যবহার করে এটি তৈরি করেছি।
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>
)} />
আমার কাছে ফায়ারবেস.জেএস ফাইল রয়েছে, যা ফায়ার স্টোরটিতে নিম্নলিখিত হিসাবে প্লাগ হয়:
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 };
প্রসঙ্গটি নীচে ফায়ারবেস র্যাপারের সাথে সেটআপ করা হয়েছে:
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;
তারপরে, প্রমাণীকরণের এইচওসি সহ আমার সাথে আমার একটি প্রসঙ্গ সরবরাহকারী রয়েছে:
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 উপাদানটিতে একটি ত্রুটি পেয়েছি যা বলে:
ফায়ারবেস 'সংজ্ঞায়িত করা হয় না
আমি লোয়ারকেস ফায়ারবেস চেষ্টা করেছি এবং একই ত্রুটি পেয়েছি।
আমি ফায়ারবেস.ফায়ার স্টোর এবং ফায়ারবেস.ফায়ার স্টোরও চেষ্টা করেছিলাম। আমি একই ত্রুটি পেয়েছি।
আমি ভাবছি যদি আমি আমার 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
}
তারপরে আমি আমার অ্যাপ.জেএসএক্সটিকে সেই পাঠকের সাথে মোড়ানোর চেষ্টা করব:
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} />
আমি যখন এটি চেষ্টা করি তখন আমি একটি ত্রুটি পাই যা বলে:
প্রকারের ত্রুটি: _ফায়ারবেস__উইবপ্যাক_আইএমপোর্টটি_মোডিএল_2 __। ডিফল্ট.অথ কোনও ফাংশন নয়
আমি এই পোস্টটি সেই ত্রুটিটি মোকাবেলা করতে দেখেছি এবং সুতা আনইনস্টল ও পুনরায় ইনস্টল করার চেষ্টা করেছি। এতে কোন পার্থক্য নেই.
আমি যখন ডেমো অ্যাপ্লিকেশনটি দেখি, তখন এটি পরামর্শ দেয় যে একটি 'ইন্টারফেস' পদ্ধতি ব্যবহার করে প্রসঙ্গ তৈরি করা উচিত। আমি কোথা থেকে আসছি তা দেখতে পাচ্ছি না - ডকুমেন্টেশনে এটি ব্যাখ্যা করার জন্য কোনও রেফারেন্স খুঁজে পাচ্ছি না।
এটিকে প্লাগ ইন করার জন্য আমি কী করেছি তা চেষ্টা করার পরিবর্তে আমি নির্দেশাবলীর অনুধাবন করতে পারি না।
আমি এই পোস্টটি দেখেছি যা প্রতিক্রিয়া-ফায়ারবেস-হুক ব্যবহার না করে ফায়ারস্টোর শোনার চেষ্টা করে। উত্তরগুলি কীভাবে এই সরঞ্জামটি ব্যবহার করতে হবে তা বোঝার চেষ্টা করে।
আমি এই দুর্দান্ত ব্যাখ্যাটি পড়েছি যা এইচওসি থেকে হুকগুলিতে কীভাবে সরানো যায় তার মধ্যে যায়। আমি কীভাবে ফায়ারবেস শ্রোতাদের সংহত করতে পারি তার সাথে আটকে আছি।
আমি এই পোস্টটি দেখেছি যা এটির জন্য কীভাবে চিন্তা করা যায় তার একটি সহায়ক উদাহরণ সরবরাহ করে। আমার যদি লেখকলিস্টেনার উপাদানডিডমাউন্ট - বা ড্যাশবোর্ড উপাদান যা এটি ব্যবহারের চেষ্টা করছে তা করতে চেষ্টা করা উচিত কিনা তা নিশ্চিত নয়।
নেক্সট এটেম্পট আমি এই পোস্টটি পেয়েছি , যা একই সমস্যা সমাধানের চেষ্টা করছে।
আমি যখন শুভম খাতরীর প্রস্তাবিত সমাধানটি প্রয়োগ করার চেষ্টা করি, আমি ফায়ারবেস কনফিগারেশনটি নীচে সেট আপ করেছিলাম:
একটি প্রসঙ্গে সরবরাহকারী: আমদানি প্রতিক্রিয়া, 'রিঅ্যাক্ট' থেকে} useContext;; '../../ffirebase' থেকে ফায়ারবেস আমদানি করুন;
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;
তারপরে ইনডেক্স.জেজে আমি অ্যাপ্লিকেশনটিকে সরবরাহকারীর মতো করে গুটিয়ে রাখি:
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} />
আমি যখন এটি চেষ্টা করি তখন আমি একটি ত্রুটি পাই যা বলে:
চেষ্টা করা আমদানি ত্রুটি: 'ফায়ারবেস কনটেক্সট' '../Firebase/ContextHookProvider' থেকে রফতানি হয় না।
এই ত্রুটি বার্তাটি অর্থবোধ করে, কারণ কনটেক্সটহুকপ্রাইডার ফায়ারবেস কনটেক্সট রফতানি করে না - এটি ফায়ারবেসপ্রাইভেটর রফতানি করে - তবে আমি যদি ড্যাশবোর্ড 2 এ এটি আমদানি করার চেষ্টা না করি - তবে আমি এটি যে ফাংশনটিতে এটি ব্যবহার করার চেষ্টা করে তাতে এটি অ্যাক্সেস করতে পারি না।
এই প্রয়াসের একটি পার্শ্ব প্রতিক্রিয়া হ'ল আমার সাইন আপ পদ্ধতিটি আর কাজ করে না। এটি এখন একটি ত্রুটি বার্তা উত্পন্ন করে যা বলে:
প্রকারের ত্রুটি: নালীর সম্পত্তি 'doCreateUserWithEmailAndPassword' পড়তে পারে না
আমি এই সমস্যাটি পরে সমাধান করব but তবে ফায়ারবেসের সাথে কীভাবে প্রতিক্রিয়া জানাতে হবে তা বুঝতে একটি উপায় থাকতে হবে যা কয়েক মাস ধরে এই লুপের সাথে জড়িত না যে মৌলিক লেখক সেটআপ পেতে কাজ করে না। ফায়ারবেস (ফায়ার স্টোর) এর জন্য স্টার্টার কিট রয়েছে যা প্রতিক্রিয়া হুকের সাথে কাজ করে?
পরবর্তী প্রয়াসটি আমি এই udemy কোর্সে পদ্ধতির অনুসরণ করার চেষ্টা করেছি - তবে এটি কেবল একটি ফর্ম ইনপুট তৈরির কাজ করে - প্রমাণীকরণকারী ব্যবহারকারীর সাথে সামঞ্জস্য করার জন্য কোনও শ্রোতা নেই the
আমি এই ইউটিউব টিউটোরিয়ালটিতে পদ্ধতির অনুসরণ করার চেষ্টা করেছি - যা থেকে এই রেপোটি কাজ করতে পারে। এটি হুকগুলি কীভাবে ব্যবহার করতে হয় তা দেখায়, তবে কীভাবে প্রসঙ্গে ব্যবহার করতে হয় তা নয়।
নেক্সট এটেম্পট আমি এই রেপোটি পেয়েছি যা ফায়ার স্টোর সহ হুক ব্যবহার করার জন্য একটি ভাল চিন্তাভাবনা পদ্ধতির বলে মনে হচ্ছে। যাইহোক, আমি কোডটি বুঝতে পারি না।
আমি এটি ক্লোন করেছি - এবং সমস্ত পাবলিক ফাইলগুলি যুক্ত করার চেষ্টা করেছি এবং তারপরে যখন আমি এটি চালাব - আমি আসলে কোডটি পরিচালনা করতে পারি না। আমি নিশ্চিত নই যে এই কোডটি চালানোর জন্য কীভাবে নির্দেশনা রয়েছে যা এই সমস্যাটি সমাধানে সহায়তা করতে পারে এমন কোডের পাঠ রয়েছে কিনা তা দেখার জন্য।
পরবর্তী মনোযোগ
আমি ডিভজয় টেম্পলেটটি কিনেছি, যা ফায়ারবেস সেটআপ হিসাবে বিজ্ঞাপন করা হয়েছে (অন্য কেউ যদি এটিকে বিকল্প হিসাবে বিবেচনা করে তবে এটি ফায়ার স্টোরের জন্য সেটআপ নয়)।
এই টেম্পলেটটি এমন একটি রথের মোড়কে প্রস্তাব দেয় যা অ্যাপ্লিকেশনটির কনফিগারেশন সূচনা করে - তবে কেবল লেখার পদ্ধতিগুলির জন্য - তাই ফায়ার স্টোরের জন্য অন্য প্রসঙ্গ সরবরাহকারীর অনুমতি দেওয়ার জন্য এটি পুনর্গঠন করা দরকার। আপনি যখন সেই প্রক্রিয়াটির মধ্যে বিশৃঙ্খলা সৃষ্টি করেন এবং এই পোস্টে প্রদর্শিত প্রক্রিয়াটি ব্যবহার করেন , তখন কী কল্পনা থাকে তা নিম্নলিখিত কলব্যাকটিতে একটি ত্রুটি:
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setUser(user);
} else {
setUser(false);
}
});
ফায়ারবেস কী তা তা জানে না। এর কারণ এটি ফায়ারবেস প্রসঙ্গ সরবরাহকারীর মধ্যে সংজ্ঞায়িত করা হয়েছে যা আমদানি করা এবং সংজ্ঞায়িত (ইউজপ্রাইভাইডউথ () ফাংশনে) হিসাবে:
const firebase = useContext(FirebaseContext)
কলব্যাকের সম্ভাবনা ছাড়াই ত্রুটিটি বলে:
প্রতিক্রিয়া হুক ব্যবহারের প্রভাবটির অনুপস্থিতি রয়েছে: 'ফায়ারবেস'। হয় এটি অন্তর্ভুক্ত করুন বা নির্ভরতা অ্যারে সরান
বা, যদি আমি চেষ্টা করি এবং কলব্যাকটিতে সেই সংঘাতটি যুক্ত করি তবে আমি একটি ত্রুটি পেয়েছি যা বলছে:
প্রতিক্রিয়া হুক "useContext" কলব্যাকের ভিতরে কল করা যায় না। প্রতিক্রিয়া হুক্স অবশ্যই একটি প্রতিক্রিয়া ফাংশন উপাদান বা একটি কাস্টম প্রতিক্রিয়া হুক ফাংশন কল করা উচিত
পরবর্তী মনোযোগ
আমি আমার ফায়ারবেস কনফিগারেশন ফাইলটি কেবলমাত্র ভেরিয়েবলগুলিতে কনফিগার করে রেখেছি (আমি যে প্রতিটি প্রসঙ্গে ব্যবহার করতে চাই তার প্রসঙ্গের সরবরাহকারীগুলিতে সাহায্যকারী লিখব)।
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;
এই বিশেষ প্রয়াসে, আমি এই ত্রুটিটি নিয়ে পতাকাঙ্কিত সমস্যাটিতে ফিরে এসেছি:
প্রকারের ত্রুটি: _ফায়ারবেস__উইবপ্যাক_আইএমপোর্টটি_মোডিএল_2 __। ডিফল্ট.অথ কোনও ফাংশন নয়
এটি লেখক সরবরাহকারীর এই লাইনটিকে সমস্যা তৈরি হিসাবে চিহ্নিত করে:
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setUser(user);
} else {
setUser(false);
}
});
আমি ফায়ারবেসে ক্যাপিটালাইজড এফ ব্যবহার করার চেষ্টা করেছি এবং এটি একই ত্রুটি ঘটায়।
আমি যখন ত্রিস্তানের পরামর্শ চেষ্টা করি, তখন আমি সেগুলি সমস্ত অপসারণ করি এবং আমার আনসাবস্ক্রাইব পদ্ধতিটিকে একটি অবিরাম পদ্ধতি হিসাবে সংজ্ঞায়িত করি (কেন সে ফায়ারবেস ভাষা ব্যবহার করছে না তা আমি জানি না - তবে যদি তার পদ্ধতির কাজ হয়, তবে আমি আরও কঠোর চেষ্টা করব) কেন বুঝতে হবে)। আমি যখন তার সমাধানটি ব্যবহার করার চেষ্টা করি তখন ত্রুটি বার্তাটি বলে:
TypeError: _util_contexts_Firebase__WEBPACK_IMPORTED_MODULE_8 ___ ডিফল্ট (...) কোনও ফাংশন নয়
এই পোস্টের উত্তরটি লেখার পরে () অপসারণ করার পরামর্শ দেয়। আমি যখন এটি চেষ্টা করি তখন আমি একটি ত্রুটি পাই যা বলে:
প্রকারের ত্রুটি: অপরিজ্ঞাতকৃত 'onAuthStateChanged' সম্পত্তিটি পড়া যায় না
তবে এই পোস্টে প্রমানের ফাইলটিতে যেভাবে ফায়ারবেস আমদানি করা হচ্ছে তাতে সমস্যা রয়েছে suggest
আমি এটি হিসাবে আমদানি করেছি: "../firebase" থেকে ফায়ারবেস আমদানি করুন;
ফায়ারবেস ক্লাসের নাম।
ত্রিস্তানের প্রস্তাবিত ভিডিওগুলি সহায়ক ব্যাকগ্রাউন্ড, তবে আমি বর্তমানে ৯ ম পর্বে আছি এবং এখনও এই সমস্যাটি সমাধানে সহায়তা করার জন্য অনুভূত অংশটি পাইনি। কেউ জানতে পারে কোথায় তা খুঁজে পাবে?
নেক্সট এটেম্পট পরবর্তী - এবং কেবল প্রসঙ্গে সমস্যাটি সমাধান করার চেষ্টা করছি - আমি ক্রিয়েট কনটেক্সট এবং ইউজকন্টেক্সট উভয়ই আমদানি করেছি এবং এই ডকুমেন্টেশনে যেমন দেখানো হয়েছে সেগুলি ব্যবহার করার চেষ্টা করেছি।
আমি একটি ত্রুটি পাস করতে পারি না যা বলে:
ত্রুটি: অবৈধ হুক কল। হুকগুলি কেবল কোনও ফাংশন উপাদানগুলির দেহের অভ্যন্তরে কল করা যায়। এটি নিম্নলিখিত কারণেগুলির একটি হতে পারে: ...
এই সমস্যাটি সমাধান করার চেষ্টা করার জন্য আমি এই লিঙ্কে দেওয়া পরামর্শগুলির মধ্য দিয়ে এসেছি এবং এটি বের করতে পারি না। এই সমস্যাটির শুটিং গাইডটিতে দেখানো কোনও সমস্যা আমার কাছে নেই।
বর্তমানে - প্রসঙ্গে বিবৃতিটি নিম্নরূপ দেখায়:
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 কোর্সটি ব্যবহার করে এই সমস্যার প্রসঙ্গটি এবং হুক উপাদানটি খুঁজে বের করার চেষ্টা করেছি - এটি দেখার পরে - নীচে ত্রিস্তানের প্রস্তাবিত সমাধানের একমাত্র দিকটি হ'ল ক্রিয়েট কনটেক্সট পদ্ধতিটি তার পোস্টে সঠিকভাবে বলা হয় না। এটি "React.createContext" হওয়া দরকার তবে এটি সমস্যা সমাধানের কাছাকাছি কোথাও যায় না।
আমি এখনও আটকে আছি
কেউ কি দেখতে পাচ্ছে যে এখানে কী খারাপ লাগছে?
export
করতে হবে export const FirebaseContext
?