Reactjs 使用历史位置键反应UseEffect

Reactjs 使用历史位置键反应UseEffect,reactjs,react-hooks,history,use-effect,Reactjs,React Hooks,History,Use Effect,如果出现包含“newcc”的查询字符串,我将使用useffect呈现一个模式 任何时候,我点击一个指向newCC账户页面的前一个模式按钮时,如果我已经在该页面上,它将不会重新提交该模式(有意义的是,不再调用useEffect): 这将强制重新渲染,因为每次推送时关键点都会更改。我的问题是,这带来了以下lint错误: React Hook useEffect具有不必要的依赖性: “历史。位置。键”。排除它或删除依赖项 数组。外部作用域值如“history.location.key”无效 依赖项,因

如果出现包含“newcc”的查询字符串,我将使用useffect呈现一个模式

任何时候,我点击一个指向newCC账户页面的前一个模式按钮时,如果我已经在该页面上,它将不会重新提交该模式(有意义的是,不再调用useEffect):

这将强制重新渲染,因为每次推送时关键点都会更改。我的问题是,这带来了以下lint错误:

React Hook useEffect具有不必要的依赖性: “历史。位置。键”。排除它或删除依赖项 数组。外部作用域值如“history.location.key”无效 依赖项,因为对它们进行变异不会重新呈现组件


忽略这个lint错误是安全的,还是我以错误的方式处理这种情况?它会重新渲染组件。如果不需要的话,我讨厌忽略lint错误。

听起来问题在于您试图在一个地方捕获太多的逻辑,而通过将事情分开来管理这一点更简单

国家应包含

isModalOpen:Boolean

&&组件的呈现应该包含路径名的逻辑检查

在渲染/功能组件的返回中

{qs === "newcc" ? return newCC : null}
{...rest of component}

因此,问题是当您关闭模式时,您将切换布尔值(因此现在它处于关闭状态)然后,当您单击表示您未付款的上一个模式时,它将不会再次打开新的CC模式,因为现在该模式被切换为关闭/状态不会通过history.push/重置,但是history.location.key发生了更改您是否尝试完全删除依赖项数组?只需使用持续重新加载的效果(()=>{…内容})/模式始终存在,因为
setShowPaymentModal(true)
在useEffect钩子内。或者,使用效果(()=>{…内容},[])模拟ComponendMount?在history.location.key更改时不会重置。我想我现在就把它留在这里,忽略这个警告
<Button text="Update Payment Info"
                    onClick={() => {
                        history.push({
                            pathname: '/account',
                            search: 'alert=newcc',
                        })
                    }}
                />
history.location.key
{qs === "newcc" ? return newCC : null}
{...rest of component}