我无法在连接到 Redux 的类组件中使用 static
方法。 TypeScript 报告
Argument of type 'typeof SAI' is not assignable to parameter of type 'ComponentType<IStateProps & IDispatchProps>'.
Type 'typeof SAI' is not assignable to type 'StatelessComponent<IStateProps & IDispatchProps>'.
Type 'typeof SAI' provides no match for the signature '(props: IStateProps & IDispatchProps & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.
容器:
export interface IStateProps {
saiList: ISaiList
}
const mapStateToProps = (state: IRootState) => ({
saiList: SaiListSelector(state)
});
export interface IDispatchProps {
getSai: () => Dispatch<AnyAction>;
postSai: (saiList: ISaiList) => Dispatch<AnyAction>;
}
const mapDispatchToProps = (dispatch: Dispatch) => ({
getSai: () => dispatch<any>(getSaiList()),
postSai: (saiList: ISaiList) => dispatch<any>(postSaiList(saiList))
});
export default connect(mapStateToProps, mapDispatchToProps)(SAI);
组成部分:
interface ISAIState {
editActive: boolean;
localSai: ISaiList;
sortBy: string;
}
type ISaiProps = IStateProps & IDispatchProps;
export default class SAI extends React.Component<ISaiProps> {
public state: ISAIState = {
editActive: false,
localSai: [...this.props.saiList],
sortBy: 'default'
};
static getDerivedStateFromProps(props: ISaiProps, state: ISAIState) {
window.console.log(props, state);
}
这是 @types/react-redux
不是最新的问题还是我这边的问题?当我注释掉时
static getDerivedStateFromProps(props: ISaiProps, state: ISAIState) {
window.console.log(props, state);
}
方法,一切正常...
最佳答案
这是因为 getDerivedStateFromProps
期望返回一个对象。
From the official documentation:
getDerivedStateFromProps is invoked right before calling the render method, both on the initial mount and on subsequent updates. It should return an object to update the state, or null to update nothing.
关于typescript - 无法在 Redux + Typescript 连接组件中使用静态 getDerivedStateFromProps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51193657/