小编And*_*rea的帖子

useEffect 重新渲染太多次

我有这个组件,它需要获取数据,将其设置为状态,然后将其传递给子项。一些数据也需要在上下文中设置。我的问题是使用 useEffect,一旦调用 API,它将为我需要执行的每个 setvalue() 函数重新渲染。我尝试将一个空的 [] 数组传递给 useEffect,但由于状态正在改变,仍然获得相同数量的重新渲染。目前该数组包含 set...functions 以防止 eslint 抛出警告。

有没有更好的方法来避免这么多次重新渲染?

const Home = (props) => {

  console.log("TCL: Home -> props", props);
  const classes = useStyles();
  const [value, setValue] = React.useState(0);


  //CONTEXT
  const { listSavedJobs, setListSavedJobs, setIsFullView} = useContext(HomeContext);
  const {
    setUserName,
    setUserLastName,
    setUserEmail,
    setAvatarProfile,
  } = useContext(UserContext);

  // STATE
  const [searchSettings, setSearchSettings] = useState([]);
  const [oppData, setOppData] = useState([]);
  const handleChange = (event, newValue) => {
    setValue(newValue);
  };


  const handleChangeIndex = index => {
    setValue(index);
  };


  //API …
Run Code Online (Sandbox Code Playgroud)

reactjs

8
推荐指数
1
解决办法
1万
查看次数

仅当发生更改时才使用 husky 预推送运行测试

如标题所示,目前我已将我的应用程序配置为每次执行 git Push 时运行测试,

"husky": {
    "hooks": {
      "pre-push": "npm run test:unit"
    }
  }
Run Code Online (Sandbox Code Playgroud)

但显然它的扩展性不好,测试越多,推送所需的时间就越长,那么有没有一种方法可以仅在文件发生更改时才触发测试?


最终我发现 Jest 有一个很好的标志叫做--changedSince ,所以你可以在你的 package.json 文件中包含类似这样的东西:

"test:unit": "test:unit --changedSince=@{push}"

只会执行自上次推送以来已更改的文件的测试,与远程 HEAD 进行比较

git husky git-husky

5
推荐指数
1
解决办法
8034
查看次数

标签 统计

git ×1

git-husky ×1

husky ×1

reactjs ×1