다른 사용자 유형에 따라 React 구성 요소를 비동기 적으로로드 할 수 있어야합니다. 예를 들어 사용자 A가 앱을 탐색 할 때 구성 요소 세트가 async를 통해로드됩니다. 그런 다음 사용자 B가받은 응용 프로그램을 사용할 때 비동기를 통해로드 된 다른 구성 요소 집합도 수신됩니다.React 구성 요소를 다른 서버 측 상태에 따라 비동기 적으로로드하는 방법은 무엇입니까?
현재 React Router와 Redux를 사용하고 있습니다. 나는 또한이 같은되는 부하 비동기 구성 요소의 덩어리를 만들 웹팩을 사용
<Route
path="/"
getComponent={(location, callback) => {
require.ensure([], (require) => {
callback(null, require('./app/App.jsx').default);
}, 'App');
}}
>
을하지만 동적으로 구성 요소를로드하는이 확장 할 때 작동하지 않습니다. 내가로드 할 모든 구성 요소가 포함되어 객체의 배열 ...
{
components: [
{
id: 0,
name: 'Dashboard',
src: './dashboard/Dashboard.jsx',
indexRoute: true,
path: '/',
},
{
id: 1,
name: 'Quote',
src: './quote/Quote.jsx',
indexRoute: false,
path: '/quote',
},
],
}
그때 이러한 구성 요소 각각에 대한 경로를 만들 맵을 사용
을 ... 만든
const routes = components.map((component) => {
if (component.indexRoute) {
return (
<IndexRoute
getComponent={(location, callback) => {
require.ensure([], (require) => {
callback(null, require(component.src).default);
}, component.name);
}}
key={component.id}
/>
);
}
return (
<Route
path={component.path}
getComponent={(location, callback) => {
require.ensure([], (require) => {
callback(null, require(component.src).default);
}, component.name);
}}
key={component.id}
/>
);
});
: 나는 ... 주요 통로로
<Route
path="/"
getComponent={(location, callback) => {
require.ensure([], (require) => {
callback(null, require('./app/App.jsx').default);
}, 'App');
}}
>
{routes}
</Route>
을 내 생성 경로를 삽입 할 때 나는 다음과 같은 오류가 발생합니다3210
경고 :
require function is used in a way in which dependencies cannot be statically extracted
나는 웹팩 그것을 빌드시 컴파일하는 무슨 청크 알 필요가 있기 때문입니다 가정? 이것이 문제이며, 이것의 방법이 있습니까? 아니면 더 나은 솔루션일까요?
감사 이후 단계에서이 건너 오는 사람들을위한
https://webpack.github.io/docs/code-splitting.html require.ensure()가 동 기적으로 만 작동한다고 생각하면 AMD를 사용해야 할 수도 있습니다. – r0dney
정보 @ r0dney 주셔서 감사합니다 :) –