小编Aon*_* Li的帖子

在 useEffect() 中使用 useDispatch() 时,似乎不会立即调用 action

我想在第一次安装页面时调度一个动作。此操作loading立即设置为 true,然后在 2 秒后将其设置为 false。

注意到当我使用钩子/反应组件时它有不同的行为。当我使用 将它写在反应组件中时componentDidMount,一切正常。但是对于 hooks useEffect,在调用加载动作之前有 0.3 秒的时间间隔。是什么导致了这个微小的时间间隔?不useEffect应该等同于componentDidMount?

运行示例

代码沙盒

使用效果()

import React, { useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";

import { load } from "./actions/user";

const Router = () => {
  const dispatch = useDispatch();
  useEffect(() => {
    dispatch(load(true));
  }, [dispatch]);
  const loading = useSelector(state => state.user.loading);
  if (loading) {
    return <div>Loading...</div>;
  }
  return <div style={{ backgroundColor: "red" }}>Loaded</div>;
};

export default …
Run Code Online (Sandbox Code Playgroud)

reactjs redux react-redux react-hooks

4
推荐指数
1
解决办法
1900
查看次数

标签 统计

react-hooks ×1

react-redux ×1

reactjs ×1

redux ×1