У меня есть компонент React, который использует функцию refractx connect
(декоратор) для установки свойств. При упоминании этого компонента в JSX, flowtype жалуется «свойство не найдено в ... реквизита Реагировать элемент»React Redty Flowtype «свойство не найдено» в элементе React, которое получает свойства от соединения redux.
type SidebarCmpProps = {
activeSidebarComponent: string,
actions: { openCallMember:() => void }
}
@connect(
(state) => {
return { activeSidebarComponent: state.sidebar.activeSidebarComponent }
},
(dispatch) => ({ actions: bindActionCreators({ openCallMember }, dispatch) })
)
class Sidebar extends React.Component {
props: SidebarCmpProps
static propTypes = {
actions: React.PropTypes.object.isRequired,
activeSidebarComponent: React.PropTypes.string
}
}
Точная ошибка:
65: ^^^^^^^^^^^ React element `Sidebar` 56: props: SidebarCmpProps ^^^^^^^^^^^^^^^ property `actions`. Property not found in... 65: ^^^^^^^^^^^ props of React element `Sidebar`
Чтобы обойти эту ошибку, я имел для изменения свойств типов союза any
и добавить defaultProps
, что меньше, чем идеальный
type SidebarCmpProps = {
activeSidebarComponent: any | string,
actions: any | { openCallMember:() => void }
}
class Sidebar extends React.Component {
static defaultProps: SidebarCmpProps = {
actions: null,
activeSidebarComponent: null
}
}
Есть ли лучшее решение?
Вы пытались дать 'action' форму в' propTypes'? –
Изменение 'actions' в форме в' propTypes' не мешает мне использовать тип 'any' union для« решения »ошибки. Я также получаю ту же ошибку из 'activeSidebarComponent: string' prop (не вставлен выше для краткости). – joshm1