Я пытаюсь загружать компоненты только при нажатии, а не загружать все во время запуска.
index. js:
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById("root")
);
Приложение . js:
const App = (props) => {
return (
<React.Fragment>
<AProvider>
<Route exact path="/A" component={A} />
<AProvider>
<BProvider>
<Route exact path="/B" component={B} />
</BProvider>
<CProvider>
<Route exact path="/C" component={C} />
</CProvider>
<DProvider>
<Route exact path="/" component={D} />
</DProvider>
</React.Fragment>
)};
export default App;
Каждый компонент моего поставщика выполняет вызов конечной точки для получения данных для компонента
export const AContext = React.createContext();
export const AProvider = (props) => {
const [A, setA] = useState([]);
useEffect(() => {
async function getA() {
try {
const result = await axios.get(http://localhost/a", {
params: {
id: 1,
},
});
setA(result.data);
} catch (e) {
console.log(e);
}
}
getA();
}, []);
return (
<AContext.Provider value={[A, setA]}>
{props.children}
</AContext.Provider>
);
};
Когда я просматриваю root моего сайта на http://localhost: 3000 / , я ожидаю загрузить только компонент D, но когда я смотрю на сетевые вызовы браузера, я вижу, что получаю вызовы для всех четырех компонентов, а не только загружаю компонент маршрута, как выборочно загружать компоненты? Я пробовал react-loadable и React.Lazy, но он по-прежнему выполняет все четыре вызова. Любая помощь приветствуется.