비동기 경로를 프리 페치 또는 미리로드하는 방법이 있습니까? 지금 RR2/3로이 작업을 수행하는 방법을 모색 중입니다. 기본적인 아이디어는 모든 경로에서 코드 분할이지만, 해당 페이지를 방문하기 전에 서비스 작업자의 연결된 페이지에 대한 번들을 캐시 할 수 있기를 바랍니다. 그래서 제가하고 싶은 것은 사용자 정의 <Link>
입니다. 렌더링 할 때마다 링크 된 페이지의 리소스를 캐시하려고 시도합니다. 이렇게하면 페이지 전환이 훨씬 빨라집니다. 내가 모르는 것은 자원을 가져올 수 있도록 경로 탐색을 에뮬레이트하는 방법이 있는지 여부입니다. 이 API 또는 누군가를 생각할 수있는 일종의 까다로운 방법이 있습니까?비동기 경로에 대한 프리 페치 리소스
1
A
답변
0
링크가 장착 된 시간 제한에서 require.ensure...
섹션 만 수행 할 수 있습니다. 코드 분할이 필요하고 비동기 적으로로드해야합니다. 시간 초과로 인해 파일이 별도의 파일에로드됩니다.
RR3에서 코드 분할을 위해 RR4를 사용하는 것이 좋습니다. 자식 경로가 변경되면 비동기 필수 경로가 다시 포함되고 다시 렌더링됩니다. 필자의 경우, 하위 라우트 변경을 위해 내 라우트의 구성 요소 WillMount가 실행되었습니다. 예 : /agent/step-1
에서 /agent/step-2
으로 이동하면 /agent
의 구성 요소가 마운트 해제되고 다시 마운트됩니다.
1
이것은 내가 생각해 낸 것입니다. React Router Link 구성 요소를 감싸는 구성 요소이며 componentDidMount
(서버가 아닌 클라이언트에서만 실행 됨) 프로덕션 환경에서 실행되는지 확인합니다 (개발 중에는이 작업을 실행할 필요가 없음). 이이 아닌 브라우저인지 확인하십시오. 서비스 근로자 (이 점검은 유스 케이스에만 해당됨). 그런 다음 위치와 수동으로 일치시키고 비동기식 getComponent
함수를 호출하십시오.
import React from 'react'
import Link from 'react-router/lib/Link'
class GatsbyLink extends React.Component {
componentDidMount() {
// Only enable prefetching of Link resources in production and for browsers that
// don't support service workers *cough* Safari/IE *cough*.
if (process.env.NODE_ENV === 'production' && !('serviceWorker' in navigator)) {
const routes = require('my-routes')
const { createMemoryHistory } = require('history')
const matchRoutes = require('react-router/lib/matchRoutes')
const getComponents = require('react-router/lib/getComponents')
const createLocation = createMemoryHistory().createLocation
if (typeof routes !== 'undefined') {
matchRoutes([routes], createLocation(this.props.to), (error, nextState) => {
getComponents(nextState,() => console.log('loaded bundle(s) for ' + this.props.to))
})
}
}
}
render() {
return <Link {...this.props} />
}
}
module.exports = GatsbyLink
관련 문제
- 1. 사용자 정의 프리 페치
- 2. typeahead.js 프리 페치 문제
- 3. UIPageView UIWebView 프리 페치
- 4. 프리 페치 예제?
- 5. ARM의 프리 페치 명령어
- 6. 유성애 프리 페치 데이터
- 7. RabbitMQ 프리 페치
- 8. 프리 페치 컬럼 시퀀스 SQLAlchemy
- 9. 위치 기반 데이터 프리 페치
- 10. 특정 수준의 캐시로 프리 페치
- 11. 자바 스크립트로 DNS 프리 페치
- 12. ActiveMQ 및 프리 페치 제한
- 13. RabbitMQ : 프리 페치 메시지 처리
- 14. 프리 페치 행 크기 설정
- 15. AngularJS 지시어에서 데이터 프리 페치
- 16. 리소스 폴더 경로에 대한 액세스
- 17. 백본. 콜렉션 프리 페치 및 캐싱
- 18. 비 인접 데이터의 명시 적 프리 페치
- 19. 엔티티 프레임 워크에 프리 페치 경로가 필요합니까?
- 20. Typeahead.js 프리 페치 옵션이 작동하지 않습니다.
- 21. 호버 div에 대한 큰 이미지 프리 페치 페이지 속도 문제
- 22. x86-64 용 캐시에 대한 데이터 프리 페치
- 23. NMS 수신기 컨테이너에 대한 프리 페치 제한을 설정하는 방법
- 24. DNS 프리 페치 및 페이지 최적화
- 25. HTML5 프리 페치 사용의 위험성이 있습니까?
- 26. 프리 페치 후크 기능을 내 자식
- 27. J2ME : 프리 페치 오류 -5. MediaException
- 28. iframe 콘텐츠를 프리 페치/캐시하는 방법은 무엇입니까?
- 29. 장고에있는 관련 객체의 제한된 수를 프리 페치
- 30. UICollectionView iOS 10의 프리 페치 데이터 소스?
이미 내 경로 정의에 require.ensure stuff 설정이 있습니다. 다시 작성하고 싶지는 않습니다. 일치하는 경로의 각 레벨에서 리소스를 가져 오는 지 확인하십시오. –