React-Redux и совет маршрутизатора - PullRequest
0 голосов
/ 12 марта 2019

Я обновляю свое веб-приложение.Я добавил Redux, и теперь я хочу добавить React-Router.Я вижу, что с Маршрутизатором лучше не использовать приложение в моей функции, а на другой странице, но как мне теперь это сделать?У меня есть что-то вроде этого: App.js

import React, { Component } from "react";
import { connect } from "react-redux";
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import Home from "../Routes/Home";
import { getShows } from "../actions/action";
import "./App.css";
import $ from "jquery";

import Test from "../Routes/Test";

const mapStateToProps = state => {
  return {
    isPedding: state.getShowsHome.isPedding,
    data: state.getShowsHome.data
  };
};

const mapDispatchToProps = dispatch => {
  return {
    onGetShows: () => dispatch(getShows())
  };
};

class App extends Component {
  constructor() {
    super();
    this.state = {
      isLoad: false,
      headerSlide: []
    };
  }

  componentDidMount() {
    this.props.onGetShows();
    setTimeout(() => {
      this.loadHeader(
        this.props.data.popularSeries,
        this.props.data.popularMovies
      );
    }, 6000);
  }

  loadHeader = (tvSeries, movies) => {
    let i = 0;
    let pre = [];
    while (i < 5 && this.state.headerSlide.length !== 5) {
      let number = Math.floor(Math.random() * 20);
      pre.forEach(num => {
        if (number === num) {
          number++;
        }
      });
      if (
        number % 2 === 0 &&
        tvSeries[number].backdrop_path != null &&
        tvSeries[number].poster_path != null
      ) {
        let newElement = [...this.state.headerSlide, tvSeries[number]];
        this.setState({ headerSlide: newElement });
      } else if (
        movies[number].backdrop_path != null &&
        movies[number].poster_path != null
      ) {
        let newElement = [...this.state.headerSlide, movies[number]];
        this.setState({ headerSlide: newElement });
      }
      pre.push(number);
      i++;
      console.log(pre);
    }
    $(".loader").fadeOut(1000);
    setTimeout(() => {
      this.setState({ isLoad: true });
    }, 1000);
  };

  render() {
    if (!this.state.isLoad) {
      return <h1 className="loader">Loading</h1>;
    } else {
      return (
        <Router>
          <Switch>
            <Route
              exact
              path="/"
              render={props => (
                <Home
                  {...props}
                  element={this.state.headerSlide}
                  tvSeries={this.props.data.popularSeries}
                  movies={this.props.data.popularMovies}
                  horror={this.props.data.horrorMovies}
                  anime={this.props.data.anime}
                />
              )}
            />
            <Route path="/test" render={() => <Test />} />
          </Switch>
        </Router>
      );
    }
  }
}

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

Когда я захожу в / test, браузер перезагружает все.Вещи, которые мне не нужны на этой странице, он тоже перезагружает загрузку, поэтому мне нужно создать хранилище и использовать провайдера на маршрутизаторе Home.js, или мне нужно использовать провайдера в App.js, или я могу использовать провайдера только вindex, а на Home.js передаются все функции, соединения и другие вещи, которые я хочу использовать на своей домашней странице?

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