我的组件中有一个函数可以访问路由器参数。
import { withRouter } from 'react-router-dom';
import type { Match } from 'react-router-dom';
@withRouter
export default class UserDetails extends Component {
getUserContributions() {
const { match: { params: { userId } } } = this.props;
this.props.getUserContributions(userId);
}
// ... other non-relevant stuff.
}
但是,流程会抱怨userId
可能未定义。这是可预测的,因为这是react-router-dom
由flow-typed
定义params的方式。它不知道有一个名为userId
的特定必需键是string
类型。
declare export type Match = {
params: { [key: string]: ?string },
isExact: boolean,
path: string,
url: string
};
我想提供路线参数的定义作为一种类型。这是我的第一次尝试:
type RouteParams = {
userId: string,
}
type RouteMatch = Match & {
params: RouteParams,
}
但是,flow会为此抛出错误。
属性
params
。无法在交叉点类型的任何成员上访问属性
看来这是因为它已在Match
上定义。
有没有办法在特定的定义空间覆盖一个键?