Реагируйте на Redux машинописью - PullRequest
0 голосов
/ 16 февраля 2019

Я учусь реагировать и набирать текст с помощью приставки.У меня есть дочерний компонент, подобный этому:

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,состояние тс (2739).Я имею в виду, я не хочу передавать свойства, я использую Redux !!!Есть ли ошибка в библиотеке редуксов машинописного текста или почему я должен передать данные, или мое объявление mapStateToProps неверно и я должен пропустить параметр ownProps.

Спасибо всем, Арнольд

Ответы [ 2 ]

0 голосов
/ 10 мая 2019
interface State {}

interface OwnProps {}

interface DispatchProps {
    login: () => void;
}

interface StateProps {
    isFetching: boolean;
    accessToken: string;
}

type Props = StateProps & OwnProps & DispatchProps;

const ExampleTH = (props: Props): ReactElement => {

Вы можете использовать что-то вроде этого, это срабатывает с реакцией 16.8.4

0 голосов
/ 16 февраля 2019

Не могли бы вы показать, как вы называете этот MainTest компонент?Поскольку вы добавляете loadData только через Redux, остальные параметры students и state все же должны быть переданы компоненту в качестве реквизита.Опора errorMessage не обязательна, поэтому перевозчик не жалуется на это.

Причина, по которой перевозчик жалуется на опору loadData, наиболее вероятна из-за того, что тип, который вы вводите в MainTestProps, не соответствует типу функции loadData.Я могу только догадываться, поскольку у меня нет фактической реализации actionFetchStudents, но кажется разумным, что тип loadData должен быть loadData: () => void; вместо loadData: () => () => void;.

Посмотрите, если этоработает, в противном случае, пожалуйста, предоставьте реализации actionFetchStudents и функцию, в которую вы вызываете MainTest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...