首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待但返回意外结果~ Redux应用程序

等待但返回意外结果~ Redux应用程序
EN

Stack Overflow用户
提问于 2022-10-21 14:45:47
回答 1查看 28关注 0票数 1

我创建了一个搜索栏来搜索外部API中的数据,因此我创建了一个async函数来从该API中获取数据。这就是我遇到问题的地方。在放入片文件中的函数中,在获取数据之后,我可以将数据console.log,并准确地打印我所需的内容。但是,在我想要使用该数据进行操作的组件文件中,当我使用useSelector()取出数据并将其打印到控制台时,它将返回一个空数组[]。以下是组件文件中的代码:

代码语言:javascript
运行
复制
const result = useSelector(selectResult);

//This is the function that I pass in a value and it will dispatch an action
//And return a new value to the store
const search = async value => {
  await dispatch(fetchResult(value));
  console.log(result);
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-22 06:44:27

如果您专门询问search回调中的search,为什么它仍然是一个空数组[],那么您可能需要研究Javascript闭包

闭包是将函数捆绑在一起(包含)并引用其周围状态(词法环境)的组合。换句话说,闭包允许您从内部函数访问外部函数的作用域。在JavaScript中,每次创建函数时,都会创建闭包。

在本例中,search函数对result变量有一个闭包,当调用search时,该变量将包含search呈现周期中的任何值。不管await dispatch(fetchResult(value));对存储做了什么,回调处理程序中的result值不会改变。

一般来说,如果您想在值更新后注销它们,那么您应该使用带有适当依赖项的useEffect钩子。

示例:

代码语言:javascript
运行
复制
const result = useSelector(selectResult);

useEffect(() => {
  console.log(result);
}, [result]);

const search = value => {
  dispatch(fetchResult(value));
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74155394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档