无法在 Redux + Typescript 连接组件中使用静态 getDerivedStateFromProps
Unable to use static getDerivedStateFromProps inside Redux + Typescript Connected Component
我无法在连接到 Redux 的 Class 组件中使用 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.
我无法在连接到 Redux 的 Class 组件中使用 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.