【问题标题】:How to avoid "setState never used" when using useContext hook使用 useContext 钩子时如何避免“setState never used”
【发布时间】:2022-12-03 02:22:40
【问题描述】:

我知道如果你有这样的事情......

const [state, setState] = useState('some state');

并且您收到 setState is never used 的警告,您不应该使用 State,而是使用普通变量。

我的问题是,如果这是 useContext 而不是 useState ,如下所示怎么办?我有其他组件的这种结构,但有些组件不需要为此上下文设置状态。我该如何处理这个警告? eslint 是我唯一的选择吗?

const [state, setState] = useContext(myContext);

【问题讨论】:

    标签: reactjs react-hooks state react-context


    【解决方案1】:

    如果您不打算使用它,请不要破坏它

    const [state] = useContext(myContext);

    你的useContext(和useState)正在返回一个数组。你只需重组事物在这些位置

    cons useState = () => ["hi", "mom"];
    
    const [position_0, position_1] = useState();
    
    
    console.log(postition_0) // "hi"
    console.log(postition_1) // "mom"
    
    

    【讨论】:

      【解决方案2】:

      如果您在使用 useContext 挂钩时收到 setState 从未使用过的警告,您可以简单地不从挂钩中解构 setState 并仅使用状态变量。这将避免警告并允许您访问上下文状态而无需设置它。

      以下是如何使用此方法避免警告的示例:

      const myContext = React.createContext();
      
      function MyComponent() {
        const state = useContext(myContext);
      
        return (
          <div>
            {/* Use the context state in your component. */}
            <p>{state.someValue}</p>
          </div>
        );
      }
      

      在此示例中,MyComponent 仅使用来自 useContext 挂钩的状态变量,因此 setState 未被解构,从而避免了警告。这允许 MyComponent 访问上下文状态而无需设置它。

      或者,您可以使用 eslint linting 工具通过添加注释告诉 eslint 忽略未使用的 setState 变量来抑制警告。如果您想以使用 setState 的方式使用 useContext 挂钩,这会很有用

      【讨论】:

      • 这仅在它是我需要的状态而不是 setState 时才有效。如果我只使用 setState 怎么办?
      猜你喜欢
      • 2020-07-26
      • 2019-10-17
      • 1970-01-01
      • 2020-12-03
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2022-01-24
      相关资源
      最近更新 更多