Я использую безопасные действия в своем проекте response.js Я пытаюсь изменить свои действия со стандартных на асинхронные с помощью createAsyncAction.
это мой код:
действия / users.ts
export const fetchUserStatus = createAsyncAction(
'FETCH_USER_REQUEST',
'FETCH_USER_SUCCESS',
'FETCH_USER_FAILURE'
)<void, any, any>();
компоненты / userStatus.tsx
import * as React from 'react';
import { connect } from 'react-redux';
import { fetchUserStatus } from '../actions/user';
type Props = {
fetchUser: () => any;
};
class UserStatus extends React.Component<Props> {
render() {
this.props.fetchUser();
return (<div/>);
}
}
const mapStateToProps = () => ({});
export default connect(mapStateToProps, {
fetchUser: fetchUserStatus.request(),
})(UserStatus);
Когда я пытаюсь его скомпилировать, я получаю следующую ошибку:
Error:(31, 4) TS2345: Argument of type 'typeof UserStatus' is not assignable to parameter of type 'ComponentType<Shared<{ fetchUser: EmptyAction<"FETCH_USER_REQUEST">; }, Props>>'.
Type 'typeof UserStatus' is not assignable to type 'StatelessComponent<Shared<{ fetchUser: EmptyAction<"FETCH_USER_REQUEST">; }, Props>>'.
Type 'typeof UserStatus' provides no match for the signature '(props: Shared<{ fetchUser: EmptyAction<"FETCH_USER_REQUEST">; }, Props> & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.
Поскольку я все еще новичок в машинописном тексте, я не знаю, как его решить. При использовании стандартных действий моя кодировка работает.
Любые идеи?
хорошо, это один из тех моментов, когда вы меняете свой код и делаете опечатки:
export default connect(mapStateToProps, {
fetchUser: fetchUserStatus.request(),
})(UserStatus);
должно быть:
export default connect(mapStateToProps, {
fetchUser: () => fetchUserStatus.request(),
})(UserStatus);
Наверное, не имеет отношения к OP, но есть еще: ---
export default connect(mapStateToProps, { fetchUser: fetchUserStatus.request, })(UserStatus);