मैं रिएक्ट राउटर के नए उपयोगहिस्टोर हुक का उपयोग कर रहा हूं, जो कुछ सप्ताह पहले सामने आया था। मेरा रिएक्ट-राउटर संस्करण 5.1.2 है। मेरा प्रतिक्रिया संस्करण 16.10.1 पर है। आप नीचे मेरा कोड पा सकते हैं।
फिर भी जब मैं रिएक्शन-राउटर से नया उपयोग करता हूं, तो मुझे यह त्रुटि मिलती है:
Uncaught TypeError: Cannot read property 'history' of undefined
जो रिएक्ट-राउटर में इस लाइन के कारण होता है
function useHistory() {
if (process.env.NODE_ENV !== "production") {
!(typeof useContext === "function") ? process.env.NODE_ENV !== "production" ? invariant(false, "You must use React >= 16.8 in order to use useHistory()") : invariant(false) : void 0;
}
return useContext(context).history; <---------------- ERROR IS ON THIS LINE !!!!!!!!!!!!!!!!!
}
चूंकि यह कॉन्टेक्स्ट का उपयोग करने से संबंधित है और शायद संदर्भ के साथ संघर्ष में गलती है, मैंने पूरी तरह से कॉन्टेक्स्ट का उपयोग करने के लिए सभी कॉल हटाने की कोशिश की, प्रदाता को बनाया, आदि। हालांकि, कुछ भी नहीं किया। प्रतिक्रिया v16.8 के साथ की कोशिश की; वही चीज। मुझे नहीं पता कि यह क्या कारण हो सकता है, क्योंकि रिएक्टर राउटर की हर दूसरी विशेषता ठीक काम करती है।
*** ध्यान दें कि एक ही बात तब होती है जब अन्य रिएक्ट राउटर हुक को कॉल करते हैं, जैसे कि यूटीलोकेशन या यूजपराम।
क्या किसी और का इससे सामना हुआ है? इसका क्या कारण हो सकता है? किसी भी मदद की बहुत सराहना की जाएगी, क्योंकि मुझे इस मुद्दे से संबंधित वेब पर कुछ भी नहीं मिला।
import React, {useEffect, useContext} from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import { Switch, useHistory } from 'react-router'
import { useTranslation } from 'react-i18next';
import lazyLoader from 'CommonApp/components/misc/lazyLoader';
import {AppContext} from 'CommonApp/context/context';
export default function App(props) {
const { i18n } = useTranslation();
const { language } = useContext(AppContext);
let history = useHistory();
useEffect(() => {
i18n.changeLanguage(language);
}, []);
return(
<Router>
<Route path="/">
<div className={testClass}>HEADER</div>
</Route>
</Router>
)
}