当前位置: 首页 > 知识库问答 >
问题:

道具更改后再次响应调用API?

姬朗
2023-03-14

我有一个项目使用以下代码调用componentDidMount()上的API服务

class Posts extends Component {

    componentDidMount() {
        apiService.get(this.props.filters);
    }
}

const mapStateToProps = state => {
    return {
        filters: state.filters
    }
}

我的组件将过滤器从redux存储区传递到API调用。

但是,如果过滤器通过另一个组件发生变化怎么办?我似乎找不到正确的生命周期方法来在发生这种情况时重新调用api。

共有2个答案

家经纶
2023-03-14

让它工作使用

componentDidUpdate(prevProps) {
    if(JSON.stringify(prevProps.filters) !== JSON.stringify(this.props.filters)) {
        // make API call
    }
}

使用JSON。stringify确保两个空数组不会被视为不同。

江同化
2023-03-14

如果你想在本地解决这个问题,你应该使用组件didUpdate方法。

componentDidUpdate(oldProps, newProps) {
    if (this.notEqual(oldProps.filter, newProps.filter)) {
        apiService.get(this.props.filters);
    }
}

但是我会考虑将数据提升到ReDux,并发送一个异步动作来更新过滤器更改事件处理程序中的API数据。

 类似资料:
  • 我正在使用webClient调用endpoint并希望将我得到的响应映射到另一个对象。在映射该对象时,我想对响应的某些参数进行额外调用。 我的第一个调用返回以下对象 我把这种反应描绘成这样: 在getCollectionContent方法中,我迭代设置数组,从响应中提取数据并将其映射到PageContent对象。 如果响应包含类型“String”,我只需将数据添加到消息对象中,并将其添加到页面内容

  • 现在,最终的 C 库已经安装好了,我们需要再次调整工具链,让本章随后编译的那些工具都连接到这个库上。基本上,就是把 Chapter 5 中"调整工具链"那里做的调整给取消掉。在 Chapter 5 中,工具链使用的库是从宿主系统的 /{,usr/}lib 转向新安装的 /tools/lib 目录。同样的,现在工具链使用的库将从临时的 /tools/lib 转向 LFS 系统最终的 /{,usr/}

  • 我是新来的,对一些事情有点困惑。我在网上读了许多文章,声称组件不能改变自己的道具,但是父组件可以改变其子组件的道具。然而,我没有看到任何真正展示如何做到这一点的东西。 我希望能够做到这一点: 然而,我根本不知道如何做到这一点——尽管我在React上读到的几乎所有材料都说父母可以改变孩子的道具。我能正常工作的如下: 当我只想重新渲染子视图时,父视图需要重新渲染,这对我来说似乎有点过分了。如何更改<代

  • 有什么想法吗?没有JS库。 编辑:我做了几次回拨尝试。老实说,我很难理解他们。下面是我的最后一次尝试:

  • 问题内容: 下面显示的以下代码会将3个JLabel添加到JFrame中,然后删除3个JLabel。2秒后,它将重新绘制3个JLabel。 我面临的一个小问题是,它正在重新绘制到新的frame(frameTwo)而不是旧的frame(frameOne)。 如何使它重新绘制现有框架而不是重新绘制到新框架? 问题答案: Simpy使用CardLayout来交换视图。 请使用Swing计时器,而不要使用当

  • 我有以下结构: ChildComponent只是呈现值: