React-redux: действия с переменными - PullRequest
0 голосов
/ 22 апреля 2019

так что у меня есть это действие:

export const getMovieDettails = (id) => (dispatch) => {
    dispatch({type: GET_MOVIE_DETTAIL_LOADING})
    fetch(`api/movieId/${id}`)
        .then(response => response.json())
        .then(movie => dispatch({type: GET_MOVIE_DETTAIL_LOADED, payload: movie}))
        .catch(err => dispatch({type: GET_MOVIE_DETTAIL_FAIL, payload: "Error with API"}));
}

в App.js я делаю это:

const mapDispatchToProps = (dispatch) => {
  return {
    onGetShows: () => dispatch(getHomeShows()),
    onGetMovies: () => dispatch(getMoviesShows()),
    onGetSeries: () => dispatch(getSeriesShows()),
    onGetMovieDettail: (id) => dispatch(getMovieDettails(id))
  }
}

и затем передайте функцию на

<Route path="/movie/:id"  render={(routeProps) => <MovieDettailsRouter key={routeProps.match.params.id} data={this.props.movieDettail} movieDettail={this.props.onGetMovieDettail} {...routeProps}/>}/>

так на MovieDettailRouter я делаю

componentDidMount() {
        console.log(this.props.match.params.id);
        this.props.movieDettail(this.props.match.params.id);
    }

но не работает, как можно передать функцию с параметрами, для хорошего опыта я вызываю все состояния и действия в App.js, а затем передаю данные по компоненту, для вызова без параметров у меня нет проблем, все нормально , но здесь, где мне нужно получить параметры для проблемы действий, в v1 приложения я не использую действия для этой страницы, я использую только для страницы без действий с параметрами, но в этом обновлении я решил использовать избыточность для каждого вызова на сервере, и мне нужно понять, как можно передать действия с параметрами на компонентах

Редактировать: добавить состояние на MovieDettailRoute

1 Ответ

0 голосов
/ 22 апреля 2019

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

Вы можете передать данные в компонент, получив часть состояния, которое будет обновлено вашим действием с помощью mapStateToProps в компоненте приложения, а затем передать его в MovieDetailRouter

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