Javascript 在解析路由之前获取数据

Javascript 在解析路由之前获取数据,javascript,reactjs,typescript,routing,react-router,Javascript,Reactjs,Typescript,Routing,React Router,我正在使用路由“反应路由器”库。在呈现页面组件之前,我需要获取数据。我希望在每个路由之前显示加载程序,因为所有路由都需要来自服务器的数据。我的所有组件都是由控制器驱动的,所以我的解决方案是在所有组件的构造函数中创建这个控制器,并在创建控制器时获取数据 它可以工作,但我使用的是typescript,我希望访问数据时不需要(!)检查数据。更好的解决方案是使用等待数据并呈现当前页面的包装器组件。对于第一个路由,它可以工作,但“代码中的下一个”组件didmounnt只被调用一次,所以第二个路由不工作

我正在使用路由“反应路由器”库。在呈现页面组件之前,我需要获取数据。我希望在每个路由之前显示加载程序,因为所有路由都需要来自服务器的数据。我的所有组件都是由控制器驱动的,所以我的解决方案是在所有组件的构造函数中创建这个控制器,并在创建控制器时获取数据

它可以工作,但我使用的是typescript,我希望访问数据时不需要(!)检查数据。更好的解决方案是使用等待数据并呈现当前页面的包装器组件。对于第一个路由,它可以工作,但“代码中的下一个”组件didmounnt只被调用一次,所以第二个路由不工作


/*MyRoute*/
异步组件didmount(){
试一试{
等待这个.props.RouteControl.getController(这个.props.path)。然后((控制器:PageController)=>{
这是我的国家({
控制器:控制器
})
this.props.routeControl.loading=false;
})
}捕捉(错误){
//错误处理
}
}
render(){
如果(!this.props.RouteControl.loading){
const{controller}=this.state;
返回(
)
}
回装;
}

所以我需要在路由之前获取数据。之后,我需要渲染页面组件的数据在道具。这是可能的还是解决这个问题的好办法?若并没有,那个么如何解决异步路由的问题呢。谢谢:-)

使状态为isLoading:false, 然后在componentWiilMount()/DidMount()中,将isLoading状态设置为true。 获取成功后,将isLoading重置为false

componenetWillMount/didMount(){
this.setState({
isLoading: true
})
fetchData().then(res => this.setState(isLoading: false))
.catch(err => this.setState({isLoading: false}));


render(){
return(
{this.state.isLoading ? <Loader /> : <Component View /> }
)
}
componenetWillMount/didMount(){
这是我的国家({
孤岛加载:正确
})
fetchData().then(res=>this.setState(isLoading:false))
.catch(err=>this.setState({isLoading:false}));
render(){
返回(
{this.state.isLoading?:}
)
}