React Hook useCallback具有不必要的依赖关系:“价格”。要么将其排除,要么删除依赖项数组react-hooks / exhaustive-deps

时间:2019-07-06 16:15:43

标签: reactjs

import React, {Fragment, useState,useCallback } from "react";

const ProcessingSearch = () => {
  const [price, setPrice] = useState({ maxPrice: 0, minPrice: 0 });

  const inputMaxMin = useCallback(
    ({ target: { value, name } }) => {
      name === "maxPrice"
        ? setPrice(({ minPrice }) => ({ maxPrice: value, minPrice }))
        : setPrice(({ maxPrice }) => ({ minPrice: value, maxPrice }));
    },
    [price]
  );

  return (
    <Fragment>
      <form onSubmit={() => {}}>
        {"Min"}
        <input
          {...ProcessingSearchInputPrice}
          value={price.minPrice}
          onChange={inputMaxMin}
        />
        {"Max"}
        <input
          {...ProcessingSearchInputPrice}
          value={price.maxPrice}
          onChange={inputMaxMin}
        />
        <input type="submit" title={"Submit price range"} value={"Go"} />
      </form>
    </Fragment>
  );
};

使用价格时出现错误:

  

React Hook useCallback具有不必要的依赖性:'price'。要么排除   或删除依赖项数组react-hooks / exhaustive-deps

2 个答案:

答案 0 :(得分:2)

这是对useCallback实现的警告(不是因为使用price)。

作为警告状态,从依赖项数组price中删除[price]变量:

const inputMaxMin = useCallback(
    ({ target: { value, name } }) => {
      name === "maxPrice"
        ? setPrice(({ minPrice }) => ({ maxPrice: value, minPrice }))
        : setPrice(({ maxPrice }) => ({ minPrice: value, maxPrice }));
    },
   []                 // <--- remove price, not used within the hook.
  );

在这种情况下,我认为您可以不使用useCallback,因为您没有记住任何内容,请查看示例。

Edit Check-If-Render

答案 1 :(得分:0)

我不明白为什么不需要 screens 作为依赖项以及为什么我必须删除它们。

Edit dazzling-kapitsa-d0i9d