Будет ли Redux в React работать только с функциональными компонентами? - PullRequest
0 голосов
/ 19 апреля 2020

Я немного изучал React и занимался разработкой проектов. Я недавно начал с Redux, и поэтому хотел разработать свой следующий проект, используя его. Я настроил его отлично, и для одного компонента в приложении я подумал, почему я не могу иметь компонент класса в нем. Я попробовал то же самое, и это вывело много ошибок.

Так что я хочу знать, будет реагировать-редукция работать только с функциональными компонентами, а не компонентами класса. и если это так, было бы здорово, если бы вы могли объяснить, почему?

Например: я не могу объявить селекторы внутри компонента класса. Когда я объявляю переменную следующим образом:

const play = useSelector((state) => state.play); 

Выдает следующую ошибку:

Ошибка: недопустимый вызов ловушки. Хуки могут быть вызваны только внутри тела компонента функции.

1 Ответ

1 голос
/ 19 апреля 2020

В конце концов вы получили суть в комментариях, но, проще говоря, вы можете использовать Redux с или классом или функциональными компонентами, но для доступа к нему используются разные методы.

Функциональные компоненты: useSelector, useDispatch https://react-redux.js.org/api/hooks

import { useSelector } from "react-redux";
import { myAction } from './myActions';

const MyComponent = (props) => {
  // connect to "play" from Redux store
  const play = useSelector((state) => state.play);
  // do stuff
  console.log(play);
}

export default MyComponent;

Компоненты класса: connect(mapStateToProps, mapDispatchToProps) https://react-redux.js.org/api/connect

import { connect } from "react-redux";

class MyComponent extends React.Component {
  // do stuff
  console.log(this.props.play)
}

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

export default connect(mapStateToProps)(MyComponent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...