मैं अपने बाहरी (node_modules) पैटर्न लाइब्रेरी से घटकों को प्रदान कर रहा हूं। अपने मुख्य ऐप में, मैं अपने बाहरी पुस्तकालयों के घटक में अपना Link
उदाहरण दे रहा हूँ react-router-dom
जैसे:
import { Link } from 'react-router-dom';
import { Heading } from 'my-external-library';
const articleWithLinkProps = {
url: `/article/${article.slug}`,
routerLink: Link,
};
<Heading withLinkProps={articleWithLinkProps} />
मेरी लाइब्रेरी में, यह इस प्रकार प्रस्तुत कर रहा Link
है:
const RouterLink = withLinkProps.routerLink;
<RouterLink
to={withLinkProps.url}
>
{props.children}
</RouterLink>
RouterLink
जब क्लिक यूआरएल पर नेविगेट सही ढंग से प्रस्तुत करने के लिए लगता है, और यहां तक कि।
मेरा मुद्दा यह है कि RouterLink
लगता है कि मेरे ऐप के react-router-dom
उदाहरण से अलग हो गए हैं । जब मैं क्लिक करता हूं Heading
, तो यह "कठिन" नेविगेट करता है, पेज को वापस रूट करने के बजाय वहां मूल रूप से रूट Link
करना चाहिए।
मुझे यकीन नहीं है कि इस बिंदु पर कोशिश करने के लिए इसे मूल रूप से नेविगेट करने की अनुमति क्या है। किसी भी मदद या सलाह की सराहना की जाएगी, अग्रिम धन्यवाद।
संपादित करें: दिखा रहा है कि मेरा राउटर कैसे सेट किया गया है।
import React from 'react';
import { hydrate, unmountComponentAtNode } from 'react-dom';
import { AppContainer } from 'react-hot-loader';
import { Provider } from 'react-redux';
import { createBrowserHistory } from 'history';
import { ConnectedRouter } from 'react-router-redux';
import RedBox from 'redbox-react';
import { Route } from 'react-router-dom';
import { Frontload } from 'react-frontload';
import App from './containers/App';
import configureStore from './redux/store';
import withTracker from './withTracker';
// Get initial state from server-side rendering
const initialState = window.__INITIAL_STATE__;
const history = createBrowserHistory();
const store = configureStore(history, initialState);
const mountNode = document.getElementById('react-view');
const noServerRender = window.__noServerRender__;
if (process.env.NODE_ENV !== 'production') {
console.log(`[react-frontload] server rendering configured ${noServerRender ? 'off' : 'on'}`);
}
const renderApp = () =>
hydrate(
<AppContainer errorReporter={({ error }) => <RedBox error={error} />}>
<Provider store={store}>
<Frontload noServerRender={window.__noServerRender__}>
<ConnectedRouter onUpdate={() => window.scrollTo(0, 0)} history={history}>
<Route
component={withTracker(() => (
<App noServerRender={noServerRender} />
))}
/>
</ConnectedRouter>
</Frontload>
</Provider>
</AppContainer>,
mountNode,
);
// Enable hot reload by react-hot-loader
if (module.hot) {
const reRenderApp = () => {
try {
renderApp();
} catch (error) {
hydrate(<RedBox error={error} />, mountNode);
}
};
module.hot.accept('./containers/App', () => {
setImmediate(() => {
// Preventing the hot reloading error from react-router
unmountComponentAtNode(mountNode);
reRenderApp();
});
});
}
renderApp();
react-router-redux
( github.com/reactjs/react-router-redux ) का उपयोग कर रहे हैं , जब तक कि आपके पास पुराने react-redux
और react-router
पुस्तकालयों के पुराने संस्करणों का उपयोग करने को लागू करने के लिए कोई विशेष बाधा नहीं है , आपको नए संस्करणों पर जाने पर विचार करना चाहिए, क्योंकि यह आपकी समस्या को ठीक कर सकता है। )। या तो आप उन्नयन करते हैं, या आप का सही संस्करण प्रदान करना चाहिए react
, react-router-redux
, react-redux
और react-router-dom
इसलिए हम एक पैचिंग समाधान खोजने के लिए एक मौका है अपनी परियोजना वर्तमान में उपयोग कर रहा है।
<Link>
एक तर्क या सहारा के रूप में आपके घटक को आपके बाहरी दायित्व में पारित क्यों नहीं किया गया है? यह नेविगेशन को संभालने के अधिक लचीलेपन और इसके स्वच्छ तरीके की अनुमति देगा।