在本机功能组件中处理401响应

时间:2019-09-29 06:07:59

标签: react-native expo

当API请求返回401并将用户发送到登录屏幕时,我收到以下警告:

Warning: Can't perform a React state update on an unmounted component.

在使用钩子的功能组件中处理此警告的最佳方法是什么。请参见下面的代码:

.
.
export default function MovieDetailsScreen() {
  const [movie, setMovie] = useState({});
  const movieId = useNavigationParam('movieId');

  useEffect(() => {
    // This is the method that does the request and returns 401 (It
    // uses the fetch library) 
    Client.movies.show(movieId) 
      .then(result => {
        setMovie(result)
      })
  }, [])
.
.
.

1 个答案:

答案 0 :(得分:0)

通常,警告不会使您的应用程序崩溃。但是您应该关心它们。例如,如果未正确卸载有状态组件,则先前的警告可能会导致性能问题

该请求(例如Promise)尚未解决,但是您已卸载该组件。然后请求解析,调用setMovie()来设置新状态,但是它遇到了未安装的组件。

您可以尝试抓住

    Client.movies.show(movieId) 
      .then(result => {
        setMovie(result)
      })
    .catch((err) => {
        Client.movies.stop()
    })