Не удается получить доступ к свойству из mapDispatchToProps - PullRequest
0 голосов
/ 04 июня 2019

Я не могу получить доступ к свойству из mapDispatchToProps, когда я использую this.props.updateCar(car), он говорит:

Свойство 'updateCar' не существует для типа 'Readonly & Readonly <{children ?: ReactNode;}> '

Вот мой код:

import * as React from "react";
import { RootState } from "src/reducers";
import { updateCar } from "src/Car/actions";
import { CarState } from "src/Car/reducers";
import { connect } from "react-redux";

const mapStateToProps = (state: RootState) => ({
  car: state.car
});

const mapDispatchToProps = (dispatch: any) => ({
  updateCar: (car: CarState) => dispatch(updateCar(car))
});

type StateProps = ReturnType<typeof mapStateToProps>;
type MapDispatchToProps = typeof mapDispatchToProps;

type Props = StateProps & MapDispatchToProps;

class CarContainer extends React.Component<Props> {
  updateCar = () => {
    const car: CarState = {
      price: 1,
      name: "Mercedes"
    };
    this.props.updateCar(car);
  };

  render() {
    return (
      <div>
        {this.props.car.name}
        <button onClick={this.updateCar}>UPDATE</button>
      </div>
    );
  }
}

export default connect<StateProps, MapDispatchToProps>(
  mapStateToProps,
  mapDispatchToProps
)(CarContainer);

1 Ответ

1 голос
/ 04 июня 2019

Вы должны использовать ReturnType<typeof mapDispatchToProps> так же, как вы использовали его для StateProps

...