首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步反应选择组件如何更改loadOptions函数的参数

异步反应选择组件如何更改loadOptions函数的参数
EN

Stack Overflow用户
提问于 2022-01-04 13:04:51
回答 1查看 1.5K关注 0票数 1

我有一个反应性异步选择组件。这个组件有一个loadOptions道具,在这里您需要传递一个函数来加载数据。现在它看起来像这样

代码语言:javascript
复制
const MyComponent = () => {
  const [positionId, setPositionId] = useEffect('');

  return (
    {
      positionId &&
      <AsyncSelect
        loadOptions={(search, prevOptions, additional) => loadMyOptions(search, prevOptions, additional, positionId)}
          (...other props)
        />
    }

      <Input
      value={positionId}
      onChange={(e) => setPositionId(e.target.value)}
      />
  )
}

loadMyOptions函数描述数据加载逻辑。该函数接受最后一个参数positionId,它根据输入字段中输入的内容而变化。现在,如果在输入字段中输入一个值,则会出现AsyncSelect并加载必要的选项。但是,如果在输入中输入其他内容并更改positionId,并尝试将新数据加载到AsyncSelect中,则不会向后端发送带有新positionId值的请求。

我试着用useCallback包装这个函数

代码语言:javascript
复制
const loadNewOptions = useCallback(
  (search, prevOptions, additional) => {
    return loadMyOptions(search, prevOptions, additional, positionId);
  },
  [positionId]
);

但这没什么用。请告诉我如何制作它,以便当更改positionId并单击AsyncSelect时,带有新值positionId的请求会到达后端?

EN

回答 1

Stack Overflow用户

发布于 2022-01-04 13:08:58

在代码中似乎存在一个竞争条件,但您不必使用“外部”positionId,而是使用您传递的条件:

代码语言:javascript
复制
    const loadNewOptions = useCallback((search, prevOptions, additional, posId) => {
      return loadMyOptions(search, prevOptions, additional, posId)
    }, [])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70579298

复制
相关文章

相似问题

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