有点傻的问题,但通常我看到
const [name, setName] = useContext(myContext)但是我有一些代码,我想做这样的事情:
var [name, setName] = useContext(myContext)
useEffect(() => {
if (someCondition)
name = undefined
setName(name ?? getName())
}, [name])我总是看到这个州被贴上“const”的标签,但这有关系吗?(上述情况可以重新分解,因此无关紧要,但这个问题具体是关于“var”与“const”之间的实际关系。)
发布于 2021-05-01 01:27:12
React通常实践函数式编程,在这种编程中,变量不被重新分配,状态不会发生变异。相反,当需要进行更新时,整个函数将使用useState (或useContext)调用返回的更新值重新运行。
与此相一致,当使用const声明变量时,它通常会使代码更容易理解--它将帮助您记住这不会被重新分配,相反,当更新发生时,整个函数将再次运行。
使用var并不是完全被禁止的,但是如果您尝试重新分配变量,它很容易误导您,因为它几乎肯定不会像预期的那样工作--只要该呈现是活动的,重新分配的变量就只有被重新分配的“状态”。下一个呈现开始后,useContext返回的前一个(或更新的)useContext将是新的name,而不管将name重新分配给什么。
最好的做法是避免调职,以避免潜在的混淆。如果您认为您想重新分配一个变量,您可能应该重新考虑并考虑更多的反应方式来做事情,这可能涉及设置状态。
因此,状态变量可能不应该重新分配--但是其他简单(无反应)变量可能是,如果它帮助您实现所需的逻辑的话。(像let count = 4;之类的,其中count是嵌套函数的本地函数,不需要是有状态的)
https://stackoverflow.com/questions/67342106
复制相似问题