Redux mapStateToProps () не отображается после возврата с помощью Next.js - PullRequest
0 голосов
/ 24 января 2019

Я изо всех сил пытался выяснить, почему render() не вызывается после mapStateToProps().

В настоящее время рабочий порядок

getInitialProps -> mapStateToProps -> mapDispatchToProps -> constructor -> render -> componentDidMount(here dispatch with Redux) -> mapStateToProps -> Конец

Как вы видите порядок, render ()должен вызываться после отправки, чтобы страницы отображались с отправленными данными из Redux.

Кто-нибудь знает почему?

pages / search / index.js

import { connect } from "react-redux";
import Container from "./container";
import { actionCreators as storeActions } from "lib/modules/stores";

const mapStateToProps = (state, ownProps) => {
  const { storeList } = state;
  return { storeList };
};
const mapDispatchToProps = (dispatch, ownProps) => {
  const { searchTerm } = ownProps;
  return {
    searchByTerm: pageNum => {
      dispatch(storeActions.searchByTerm(searchTerm, pageNum));
    }
  };
};

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(Container);

страниц / search / container.js

import Search from "./presenter";

class Index extends React.Component {
  static async getInitialProps(context) {
    const { searchTerm } = context.query;
    return {
      searchTerm
    };
  }

  state = {
    loading: true,
    offset: 0,
    page: 1,
    limit: 10,
    nlabel: ">>",
    plabel: "<<"
  };

  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
  }

  componentDidMount() {
    const { searchByTerm } = this.props;
    const { page } = this.state;
    searchByTerm(page);
  }

  render() {
    const { classes, storeList, goToSearch, searchTerm } = this.props;

    return (
      <Search
        {...this.state}
        storeList={storeList}
        searchTerm={searchTerm}
      />
    );
  }
}

export default Index;
...