【发布时间】:2018-04-26 21:45:34
【问题描述】:
我有很多组件,需要在 componentDidMount 方法中发送一些 ajax 函数。我想创建一个 HOC,其唯一目的是向组件“应用”一些动画,并在解决某个承诺后停止该动画。
当然,我可以为每个组件复制粘贴此代码,但我想创建一些处理它的抽象。
问题是,我不知道如何正确地将函数从孩子传递给父母。例如,我们假设预期的子组件有这个 componentDidMount:
componentDidMount() {
ajax('/costumers')
.then(({ data }) => {
this.setState(() => ({ costumers: data.content }))
})
}
从技术上讲,我需要将此函数作为参数传递给 HOC,或者可能以某种方式“劫持”孩子的 componentDidMount(如果有可能的话......)。 HOC 会在加载后应用动画,然后发送 ajax,只有当它被解决时,动画才会被消除,子组件才会被渲染。
如何做到这一点?
任何想法将不胜感激
【问题讨论】:
-
这听起来你需要调查github.com/reactjs/react-redux
-
我对 Redux 相当熟悉。你能给我一些具体的方向吗?我从来没有将 Redux 用于此类目的。它总是用于获取一些将被全局使用的数据,例如身份验证状态
-
redux.js.org/advanced/async-actions 我想这就是你所追求的
-
我以前使用 Thunk 进行异步 Redux 操作,但我不明白操作如何帮助我用功能“包装”我的组件。我在这里错过了什么吗?
-
将 ajax 调用与子组件的 mount 函数分开并将其放在...其他任何地方。在 ajax 调用开始时,将操作推送到状态(ajax 调用开始),错误时推送错误状态,成功时推送已完成状态和数据。让组件对这些状态做出反应,而不是管理它们
标签: javascript reactjs higher-order-components