我想在useeffect)
中调用几个异步函数,但我不确定如何包含await
关键字以等待它们的结果
// somewhere else func1 and func2 are defined
async function func1() {...};
async function func2() {...};
// func1, func2 are imported into file of functional Component
...
useEffect(() => {
async function foo() {
func1();
};
async function bar() {
func2();
}
if (...) {
await Promise.all([foo(), bar()]);
...
}
...
}, [])
...
这给了我
意外的保留字“await”
如何在useEffect()
中await
异步函数?
这就该来招数了:
// somewhere else func1 and func2 are defined
async function func1() {...};
async function func2() {...};
// func1, func2 are imported into file of functional Component
...
useEffect(async () => {
async function foo() {
await func1();
};
async function bar() {
await func2();
}
if (...) {
await Promise.all([foo(), bar()]);
...
}
...
}, [])
...
编辑:您还可以直接使用func1()
和func2()
:
...
useEffect(async () => {
if (...) {
await Promise.all([func1(), func2()]);
...
}
...
}, [])
...
您可以在useEffect中创建一个匿名函数,并使其异步化,如
useEffect(() => {
async function foo() {
func1();
};
async function bar() {
func2();
}
(async function() {
if (...) {
await Promise.all([foo(), bar()]);
...
}
...
})();
}, []);
或以更清洁的方式
useEffect(() => {
async function foo() {
func1();
};
async function bar() {
func2();
}
async function execute() {
if (...) {
await Promise.all([foo(), bar()]);
...
}
...
// any code that you would have normally added
// in useEffect callback will now be a part of execute function
}
execute();
}, [])
我试图创建一个简单的组件,从Apollo GraphQL服务器(查询)返回我的所有组织。我想从一个上下文状态呈现所有这些组织,在这个上下文状态下,在组件挂载(由useEffect挂钩处理)之后,可以使用分派方法放置这些组织。 如果状态结果(organizations数组)为空,useEffect钩子应该调用函数getOrganizations,然后调用自定义钩子useGetOrganization
如何使用钩子(或任何其他钩子)来复制? 在传统的类组件中,我将执行以下操作: 使用hook: (完整示例:https://codesandbox.io/s/2oo7zqzx1n) 这不起作用,因为在中返回的“cleanup”函数捕获装载期间的道具,而不是卸载期间的道具状态。 如何在不运行函数体(或清除)的情况下对每个道具更改进行清理? 一个类似的问题并没有涉及获得最新道具的部分。 文件状态为: 如
问题内容: 我正在学习有关如何使用钩子注册事件的Udemy课程,讲师给出了以下代码: 现在效果很好,但我不认为这是正确的方法。原因是,如果我理解正确,则每次重新渲染时,事件都会每次都在注册和注销,并且我根本认为这样做不是正确的方法。 所以我对下面的钩子做了一些修改 通过使用一个空数组作为第二个参数,使组件只运行一次效果,即模仿。当我尝试结果时,奇怪的是,在我键入的每个键上都没有附加,而是被覆盖了。
有人能解释一下我做错了什么吗?我有一个react功能组件,在其中我使用useEffect钩子从服务器获取一些数据,并将这些数据放入状态值。在获取数据之后,在同一个useHook中,我需要使用该状态值,但由于某些原因,该值是明确的。看看我的示例,console有一个空字符串,但在浏览器上我可以看到该值。 链接到codesandbox。
我需要与contentful集成,并且很难获得嵌套的JSON数据 当我这样做时,我得到了想要的结果: 因此,当我尝试它时,我得到一个错误消息,没有定义响应: 谢谢你的帮助
问题内容: 根据文档: 更新发生后立即调用。初始渲染不调用此方法。 我们可以使用新的钩子来模拟,但似乎在每次渲染后都被运行,即使是第一次也是如此。如何使它不在初始渲染上运行? 如您在下面的示例中看到的那样,它是在初始渲染期间打印的,但在初始渲染期间没有打印的。 问题答案: 我们可以使用该钩子来存储我们喜欢的任何可变值,因此我们可以使用它来跟踪函数是否是第一次运行。 如果我们希望效果在与该效果相同的