У меня есть компонент, который заключен в "connect" реактивного-редукса. Все реквизиты компонента поставляются с помощью mapStateToProps и MapDispatchToProps, поэтому «ownProps» не передается в компонент.
Однако я получаю следующую ошибку потока:
Cannot create Credits element because props [1] is incompatible with empty [2].
src/components/ChildrenView/index.js
323│ />
324│
325│ {/* Credits */}
[1] 326│ <Credits />
327│
328│ {/* fullscreen pictures rhat open with onClick on tge image */}
329│ <PhotoViewer />
flow-typed/npm/react-redux_v5.x.x.js
[2] 110│ CP: $Diff<ElementConfig<Com>, RSP>,
Разве реквизиты в 1 уже пусты ??
Я использую типизированный поток, поскольку вы можете указать в ошибке.
Вот определение класса и вызов connect:
type Props = {|
...mapStateToPropsType,
pricingModal: typeof pricingModal,
offlineModal: typeof offlineModal,
|}
class Credits extends React.Component<Props> { ... }
type mapStateToPropsType = {|
balance: number,
isVisiblePricing: boolean,
isConnected: boolean,
isVisibleOffline: boolean,
|}
const mapStateToProps = ({ parents, pricing, appState }: TP.State): mapStateToPropsType => ({
balance: parents.balance || 0,
isVisiblePricing: pricing.modalPricing,
isConnected: appState.isConnected,
isVisibleOffline: appState.modalOffline,
})
export default connect(mapStateToProps, { pricingModal, offlineModal })(Credits)
Как я могу удалить эту ошибку (без использования $ FlowFixMe: /)?
Редактировать 1
Если я внесу следующее изменение в определение типа «connect» в строке 110 и 114 в файле реагировать-redux_v5.x.x.js , проверка типа будет работать как положено.
До:
declare export function connect<
Com: ComponentType<*>,
S: Object,
SP: Object,
RSP: Object,
MDP: Object,
CP: $Diff<ElementConfig<Com>, RSP>,
>(
mapStateToProps: MapStateToProps<S, SP, RSP>,
mapDispatchToProps: MDP,
): (component: Com) => ComponentType<$Diff<CP, MDP> & SP>
После того, как:
declare export function connect<
Com: ComponentType<*>,
S: Object,
SP: Object,
RSP: Object,
MDP: Object,
CP: $Diff<$Diff<ElementConfig<Com>, RSP>, MDP>, /* <-- here */
>(
mapStateToProps: MapStateToProps<S, SP, RSP>,
mapDispatchToProps: MDP,
): (component: Com) => ComponentType<CP & SP> /* <-- here */