Я учусь реагировать и набирать текст с помощью приставки. У меня есть дочерний компонент, как это:
import ...
interface MainTestProps {
loadData: () => () => void,
students: StudentsModel[],
state: string,
errorMessage?:string
}
interface MainTestState {
}
class MainTest extends React.Component<MainTestProps,MainTestState>{
constructor(props: MainTestProps, state: MainTestState){
super(props,state);
}
.... rest of component
const mapStateToProps = (state:AppState, ownProps: MainTestProps)=> {
return {
students: [],
state: 'INIT',
errorMessage:''
}
}
const mapDispatchToProps = (dispatch: any) => {
return {
loadData: () => dispatch(actionFetchStudents())
}
}
export default connect(mapStateToProps,mapDispatchToProps) (MainTest);
Почему, если я вызываю этот компонент, я получаю сообщение об ошибке Тип "{}" пропускает следующие свойства типа "Readonly & MainTestProps>": loadData, Students, State TS (2739). Я имею в виду, я не хочу передавать свойства, я использую Redux !!! Есть ли ошибка в библиотеке редуксов машинописи или почему я должен передавать данные, или мое объявление mapStateToProps неверно, и я должен пропустить параметр ownProps.
Спасибо всем, Арнольд
Не могли бы вы показать, как вы вызываете этот компонент MainTest
? Поскольку вы только добавляете loadData
через Redux, остальные параметры students
и state
все же должны быть переданы компоненту в качестве реквизита. errorMessage
является необязательным, поэтому перевозчик не жалуется на это.
Причина, по которой транспортер жалуется на loadData
, наиболее вероятна потому, что тип, который вы MainTestProps
в MainTestProps
, не соответствует типу функции loadData
. Я могу только догадываться, поскольку у меня нет фактической реализации actionFetchStudents
, но кажется разумным, что тип loadData
должен быть loadData:() => void;
вместо loadData:() =>() => void;
,
Посмотрите, работает ли это, в противном случае предоставьте реализации actionFetchStudents
и функцию, где вы вызываете MainTest
.