首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有在api属性发生更改时才重新启动和获取

只有在api属性发生更改时才重新启动和获取
EN

Stack Overflow用户
提问于 2022-10-10 19:13:48
回答 1查看 27关注 0票数 0

仅当标签属性发生更改时,我才会尝试获得改进机的使用效果。只有在发生更改时,我才希望获取标签属性中的最新更改。我的代码如下:

代码语言:javascript
运行
复制
const usePrevious = (value: any) => {
    const ref = useRef()
    useEffect(() => {
        ref.current = value
    }, value)
    return ref.current
}

const prevLabels = usePrevious(labels)

useEffect(() => {
    if (labels !== prevLabels) {
        fetchUpdatedLabels()
    }
}, [labels, prevLabels])

const fetchUpdatedLabels = async () => {
    await axios
        .get(`/events/${printEvent.id}`)
        .then((response) => {
            const newLabels = response.data.labels
            // filter response to empty array if there are no splits left
            // if is null return empty string
            let fetchedLabels =
                newLabels !== null
                    ? newLabels
                          .toString()
                          .split(',')
                          .filter((label: string) => {
                              return label !== ''
                          }) || ''
                    : ''

            getLabels(fetchedLabels)

            print.updateEvent(printEvent.id, 'value', printEvent.value)
        })
        .catch((err) => {
            console.error(err, 'cant fetch labels from api')
        })
}

它不断地不停地重取,我如何做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-10-10 19:27:05

这很可能是因为您正在使用等效运算符!==将数组与数组进行比较。对于刚接触JS的人来说,这可能是令人惊讶的,但是如果您在JS控制台中这样做:

代码语言:javascript
运行
复制
[1,2,3] === [1,2,3]

它返回false。原因是数组是一个对象,你要问的是“左边的数组和右边的数组一样”--就像在同一个变量中一样。而这两个单独的数组实例恰好具有相同的内容。您可能想知道为什么它会在字符串和数字等上工作,但这是因为它们是原始值,而不是实例化的对象。奇怪的JS抓到你了。

There are several ways to compare an array。试试这个:

代码语言:javascript
运行
复制
useEffect(() => {
    if (labels.sort().join(',') !== prevLabels.sort().join(',')) {
        fetchUpdatedLabels()
    }
}, [labels, prevLabels])

在这里,我不确定您的用例,因为当标签不同时,您可以获取它们,但是它们更改的唯一方法是获取它们?代码中还有什么东西可以改变标签吗?如果是这样的话,一旦他们改变了,他们不会马上被服务器上的人消灭吗?

我想这里还有别的地方不对劲。你在哪里设置标签进入状态?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74019726

复制
相关文章

相似问题

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