Реагировать на перенаправление в Fetch - PullRequest
1 голос
/ 08 марта 2019

Я должен иметь эту настройку неправильно, потому что она не работает.Если я добавлю console.log в свой оператор if, он обнаружится, так что я знаю, что он доходит до этой точки, но он не перенаправляет.Я делаю это неправильно ...

...

checkUserAuth = () => {
return fetch(process.env.REACT_APP_API_URL + '/authCheck', {
  method: 'post',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': window.localStorage.getItem('token')
  },
  body: JSON.stringify({
    itemid: this.props.itemid
  })
})
}

render(){

this.checkUserAuth().then(response => response.json()).then(data => {
  if(data === 'false') {
    return <Redirect to='/' />
  }
}).catch(err => console.log(err))

....

1 Ответ

1 голос
/ 08 марта 2019

Для случаев использования побочных эффектов используйте componentDidMount(), а затем обновите внутреннее состояние, которое вызовет render метод:

checkUserAuth = () => {
  return fetch(process.env.REACT_APP_API_URL + '/authCheck', {
    method: 'post',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': window.localStorage.getItem('token')
    },
    body: JSON.stringify({
      itemid: this.props.itemid
    })
  })
}

componentDidMount() {
  this.checkUserAuth().then(response => response.json()).then(data => {
    this.setState({data});
  });
}

render() {
  if(data === 'false') {
      return <Redirect to='/' />
  } else {
    ... do something else
  }
}
...