如何避免未使用的setState函数?是否可以创建一个没有setter的React useState?

23

我目前正在一个React网站上减少/消除npm警告。

这些警告中有很多是由下面所示的setState函数引起的,被标记为“未使用”。

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

以下哪种方法更好地消除这些警告?或者有更好的方法来解决这个问题吗?
1.
const[state] = useState('some state');
const state = 'some state';

https://reactjs.org/docs/hooks-reference.html#usereducer - Yevhen Horbunkov
4个回答

30
如果完全没有使用 `setState`,那么它就是一个不变的值,可以声明为常量(2.)。你还可以将其移出组件。

9
你可能希望用一些来自props的值初始化state,然后忽略以后该props的值。在这种情况下,将状态移到组件外部是行不通的。 - Giorgi Moniava

13

如果状态设置器没有被使用,您可以避免使用useState。您可以将其值保留在常量中(在组件体内),或者移动到组件之外。

setState用于在需要了解存储在状态中的值的更改时使用。这样组件就知道何时重新渲染。


谢谢,将const值移出组件有什么好处(如果有的话)? - Thomas Fox
3
每当组件重新渲染时,它不必重新初始化变量,而在组件外部,需要初始化一次,当组件重新渲染时,只需检索值即可。 - ljbc1994
@ljbc1994 实际上的差别是无关紧要的。 - Tulio Faria
@ThomasFox 我认为这只是组织上的问题。 - Tulio Faria

8

你可能正在为这个问题苦苦挣扎(这也是我来到这个问题的原因):

const [cookies, setCookies] = useCookies(['cookiename']);

抛出警告:'setCookies' 被赋值但从未使用 [no-unused-vars]

如果您编写 cookies = useCookies...,它将不起作用。

解决方案是:

const [cookies,] = useCookies(['cookiename']);

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接