Выборка данных в компонентах в зависимости от файла cookie - PullRequest
0 голосов
/ 30 мая 2019

У меня есть такой компонент:

class MyComponent extends React.PureComponent {
  componentDidMount() {
    const { params } = this.props.match
    fetch(`/o/${params.id}`, {
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      }
    })
    .then(r => r.json())
    .then(json => {
      this.props.setData(json)
    })
  }
  render() {
    const { t, payload, cookies } = this.props;
    return <div>
      {cookies.cookies.language}
      {payload.myData}
    </div>
  }
}

Итак, я получаю свои данные в компоненте. Но что важно, результирующие данные отличаются в зависимости от одного из моих куки Поэтому после изменения файла cookie я хотел бы также повторно получить свои данные, но я не знаю, какой самый элегантный способ сделать это. Я использую библиотеку react-cookie, так что теперь каждое изменение файла cookie обновляется, на мой взгляд. Но, конечно, повторная загрузка моих данных в методе render не является хорошей идеей, и я думаю, что componentDidUpdate также является плохим местом для этого. Итак, как мне решить эту проблему?

PS. Я тоже использую Redux.

1 Ответ

1 голос
/ 30 мая 2019

У вас должно быть componentDidUpdate() и внутри, чтобы вы могли проверить, изменились ли куки, а затем сделать ваш вызов.

Было бы что-то вроде этого:

componentDidUpdate(prevProps) {
  if (this.props.cookies !== prevProps.cookies) {
    this.fetchData(this.props.cookies).then(...)
  }
}

Но похоже, что эту логику вместе с componentDidMount() следует переместить на один компонент вверх, где компонент не является чистым.

...