我想在步骤的值更改时更改formStepTouched的值,因此我使用useEffect。但useEffect发出警告,它缺少对FormStepTouch的依赖性。由于这是正在更改的值,因此将其放入依赖项数组将导致无限调用。
const [step, setStep] = useState(0);
const [formStepTouched, setFormStepTouched] = useState(
Array(childrenArray.length)
.fill(false)
.map((_, idx) => idx === 0)
)
useEffect(() => {
const newFormStepTouched = [...formStepTouched];
newFormStepTouched[step] = true;
setFormStepTouched(newFormStepTouched);
}, [step]);
请参阅下面的codesandbox链接:https://codesandbox.io/s/brave-gould-ymjt0?file=/src/App.js
正如您所看到的,演示工作非常完美,但是显示了一条错误消息。如果添加依赖项,则将无限调用useEffect。
如何消除错误消息。
useEffect(() => {
setFormStepTouched(prevState => {
const newFormStepTouched = [...prevState]
newFormStepTouched[step] = true
return newFormStepTouched
});
}, [step]);
短毛是告诉你,有一个外部依赖,可能会改变,你可以在这里阅读更多
您可以将回调传递给状态设置器:
const { useEffect, useState } = React;
const App = () => {
const [step, setStep] = useState(0);
const [formStepTouched, setFormStepTouched] = useState(
Array(5)
.fill(false)
.map((_, idx) => idx === 0)
);
useEffect(() => {
//pass a callback to state setter
setFormStepTouched((formStepTouched) => {
if (formStepTouched[step] === true) {
//nothing to change
return formStepTouched;
}
return formStepTouched.map((s, i) =>
i === step ? true : s
);
});
}, [step]);
return (
<div>
<button onClick={() => setStep(step + 1)}>
nex step
</button>
<div>
<pre>
{JSON.stringify(formStepTouched, undefined, 2)}
</pre>
</div>
</div>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="root"></div>
我在useeffect钩子上得到以下错误。 React Hook use效应有一个缺失的依赖项:当前页面。要么包含它,要么删除依赖array.eslintreact-钩子/穷举-deps 你知道我为什么会得到这个吗? }
在我的反应/redux应用程序中,我使用调度来调用每次安装组件时从redux中的状态检索数据的操作。问题正在使用状态发生我的方式不工作 下面是我得到的错误: React Hook useEffect缺少依赖项:“dispatch”。包括它或删除依赖项数组。像“getInvoiceData”这样的外部作用域值不是有效的依赖项,因为对它们进行变异不会重新呈现组件react HOOK/DEP 这是我的密
我试图在Tomcat服务器上部署一个基于spring的web应用程序,但我无法自动连接EntityManager。根本原因是错误。 我假设我有不正确的HibernateJAR作为依赖项。任何帮助都将不胜感激 我之前看到一篇帖子指出,问题在于包含了以下依赖项,但我不包括这一项: 以下是我的POM依赖项:
我在构建我的应用程序时遇到此问题。有人知道怎么回事吗? React Hook useEffect缺少依赖项:“conectar”。包括它或删除依赖项数组react hooks/dep
问题内容: 我正在使用Jersey上传文件。我定义了方法: 并调用Jersey客户的呼叫进行测试: 但是,我得到: 严重:缺少方法public java.util.Collection ImageResource.uploadImage(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)的依赖关系将j
我正在尝试学习spring boot,但有一个测试案例失败了。我有下面的pom文件,其中包含了< code > spring-boot-starter-test 依赖项。据我所知,它应该从测试库拉必要的库,包括Mockito,JUnit等。在我的测试用例文件中,尽管我在maven dependencies下看到了JUnit jar,但是导入并没有得到解析。您能指导我解决这个问题吗,这样我就可以成功