reactjs - React.lazy:this.props 为空
问题描述
我有 App.js 的简单测试项目
import React, { Component, Suspense } from 'react';
import { BrowserRouter, Route, NavLink } from 'react-router-dom';
const Posts = React.lazy(() => import('./containers/Posts'));
class App extends Component {
render() {
return (
<BrowserRouter>
<React.Fragment>
<nav>
<NavLink to="/posts/222">Posts Page</NavLink>
</nav>
<Route path="/posts/:id" render={() => (
<Suspense fallback={<div>Loading...</div>}>
<Posts {...this.props} />
</Suspense>
)}
/>
</React.Fragment>
</BrowserRouter>
);
}
}
export default App;
和容器/Posts.js
import React, {Component} from 'react';
class Posts extends Component {
componentDidMount() {
console.log(this.props);
}
render() {
return (<h1>The Posts Page</h1>)
}
};
export default Posts;
而 Posts 中的 this.props 是一个空对象。在这种情况下如何获得 this.props.match.params.id ?
解决方案
Posts
用withRouter从_react-router-dom
import React, { Component } from 'react';
import { withRouter } from 'react-router-dom';
class Posts extends Component {
componentDidMount() {
console.log(this.props);
}
render() {
return (<h1>The Posts Page</h1>)
}
};
export default withRouter(Posts);
推荐阅读
- github - github禁止TortoiseSVN Commit
- java - 多个文件上传不适用于 Okhttp3 中的视频文件
- flutter - 如何利用 dart 的异步功能来等待回调之间的值?
- java - 从 Pyspark 连接到 SQL 服务器的集成身份验证错误
- javascript - React JS BrowserRouter + Express JS + Nginx 代理没有正确生根
- r - 单行输入多个值使用空格 4 5 不按回车
- prometheus-alertmanager - alertmanager 配置中的多个匹配子句?
- angular - 尝试添加自动映射器的 Visual Studio 角度模板
- flutter - 颤振/飞镖抽象类中的工厂方法
- javascript - 有条件地将数据包装在与 vue 的链接中