最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

react-router4按需加载(踩坑填坑)

来源:动视网 责编:小采 时间:2020-11-27 22:02:17
文档

react-router4按需加载(踩坑填坑)

react-router4按需加载(踩坑填坑):react-router4如何去实现按需加载Component,在router4以前,我们是使用getComponent的方式来实现按需加载的,router4中,getComponent方法已经被移除,网上有好几种方案大多都解决的不太彻底,下面我说一下我的方案: 一:创建asyncComponen
推荐度:
导读react-router4按需加载(踩坑填坑):react-router4如何去实现按需加载Component,在router4以前,我们是使用getComponent的方式来实现按需加载的,router4中,getComponent方法已经被移除,网上有好几种方案大多都解决的不太彻底,下面我说一下我的方案: 一:创建asyncComponen


这个警告其实是在组件卸载的时候执行了setState,虽然这个警告并不影响正常使用,但是看着总是不爽,所以我们要在组件卸载的时候结束setState,如下:

componentWillUnmount(){
 this.setState = (state,callback)=>{
 return
 }
}

四:完整版asyncComponent.js

import React, { Component } from "react";

export default function asyncComponent(importComponent) {
 class AsyncComponent extends Component {
 constructor(props) {
 super(props);

 this.state = {
 component: null
 };
 }

 async componentDidMount() {
 if(this.hasLoadedComponent()){
 return;
 }
 const { default: component } = await importComponent();
 this.setState({
 component: component
 });
 }

 hasLoadedComponent() {
 return this.state.component !== null;
 }
 componentWillUnmount(){
 this.setState = (state,callback)=>{
 return
 }
 }

 render() {
 const C = this.state.component;

 return C ? <C {...this.props} /> : null;
 }
 }

 return AsyncComponent;
}

五: webpack部分配置需要配置chunkFilename

eturn {
 output: {
 path: path.resolve(CWD, config.build),
 publicPath: config.static[process.env.MODE],
 chunkFilename: 'js/[name]-[chunkhash:8].js',
 filename: 'js/[name].js',
 },

结尾推广一下我的react-native开源项目:https://github.com/duheng/Mozi

文档

react-router4按需加载(踩坑填坑)

react-router4按需加载(踩坑填坑):react-router4如何去实现按需加载Component,在router4以前,我们是使用getComponent的方式来实现按需加载的,router4中,getComponent方法已经被移除,网上有好几种方案大多都解决的不太彻底,下面我说一下我的方案: 一:创建asyncComponen
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top