【发布时间】:2020-03-29 17:25:11
【问题描述】:
如果出现包含“newcc”的查询字符串,我正在使用 useEffect 呈现模式
useEffect(() => {
if (qs === "newcc") {
setShowPaymentModal(true)
}
}, [qs]);
如果我已经在该页面上单击指向带有 newCC 的帐户页面的前一个模态的按钮,它将不会重新呈现该模态(不会再次调用 useEffect 是有道理的):
<Button text="Update Payment Info"
onClick={() => {
history.push({
pathname: '/account',
search: 'alert=newcc',
})
}}
/>
我发现的一种解决方法是在依赖数组中简单地包含以下内容:
history.location.key
这会强制重新渲染,因为每次推送都会改变键。我的问题是,这会引发以下 lint 错误:
React Hook useEffect 有一个不必要的依赖: 'history.location.key'。排除它或删除依赖项 大批。像“history.location.key”这样的外部范围值无效 依赖项,因为改变它们不会重新渲染组件
简单地忽略这个 lint 错误是否安全,还是我以错误的方式处理这种情况?它会重新渲染组件。如果没有必要,我讨厌忽略 lint 错误。
【问题讨论】:
标签: reactjs react-hooks history use-effect