TypeError: state.getIn не является функцией - PullRequest
0 голосов
/ 31 марта 2020

Я использую неизменяемый объект в своем реактивном проекте, используя его с избыточностью, делая состояние неизменяемым объектом, используя функцию из JS () (из неизменяемой библиотеки). В моем файле редуктора все работает, я получаю действие, я могу установить новое значение, используя функцию setIn (), и я могу использовать функцию getIn () для доступа к состоянию.

Но когда я получаю состояние из соединения (), используя mapStateToProps, даже если console.log показывает явно неизменный объект, я не могу использовать неизменяемые функции, такие как Js () или getIn () здесь. Я всегда получаю эту ошибку: TypeError: state.getIn is not a function.

Мой индекс. js файл

import React from 'react';
import { connect } from 'react-redux';
import { compose } from 'redux';
import PropTypes from 'prop-types';
import Button from '@material-ui/core/Button';
import { template as templateAction } from './actions';
import withReducer from '../../../reducer/withReducer';
import templateReducer from './reducer';

export const Template = ({ name, template }) => (
  <Button onClick={template}>
    {name}
  </Button>
);

Template.propTypes = {
  name: PropTypes.string.isRequired,
  template: PropTypes.func.isRequired,
};

export const mapStateToProps = (state) => {
  console.log('state is equal to', state);
  return (
    {
      name: state.getIn(['templateReducer', 'name']),
    });
};

export const mapDispatchToProps = (dispatch) => ({
  template: () => dispatch(templateAction()),
});

export default compose(
  withReducer('templateReducer', templateReducer),
  connect(mapStateToProps, mapDispatchToProps),
)(Template);

Результат console.log (состояние)

Результат console.log (состояние)

PS: когда я не использую неизменное состояние , все работает хорошо.

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