- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 React 容器组件,它在页面加载时分派(dispatch)一个操作(使用 componentDidMount
生命周期方法)。该操作调用 API,成功的 API 调用会导致数据通过 reducer 添加到我的 Redux 存储中。
我有一些其他 API 需要来自初始 API 调用响应的数据。我在 componentWillReceiveProps
生命周期方法中有这些,我正在将 this.props
与 nextProps
进行比较,以确定我是否准备好调用数据API 的。
90% 的时间这段代码都有效,componentWillReceiveProps
中的 API 调用被成功调用,但另外 10% 的 API 没有被调用,因为 if 语句中的代码比较 this.props
和 nextProps
不执行。
从测试中我想我已经找到了问题...如果初始 API 调用返回得足够快,则第一次 componentWillReceiveProps
被调用 this.props
是已经填充了来自 API 调用的数据,而不是返回我的初始状态,此时 if 语句不执行。
防弹的最佳方法是什么?
<Route
path={'Content/:id'}
component={DrillPage}
/>
class DrillPage extends Component {
componentDidMount() {
this.props.actions.getLoggedInUser();
}
componentWillReceiveProps(nextProps) {
console.log(this.props);
console.log(nextProps);
// Don't fire if user isn't logged in
if (this.props.loggedInUser.id !== nextProps.loggedInUser.id) {
this.props.actions.isFavourite(this.props.content.id, this.props.content.type);
this.props.actions.doIFollow([this.props.content.author.id]);
}
}
}
function mapStateToProps(state, ownProps) {
return {
contentId: ownProps.params.id,
loggedInUser: state.loggedInUser,
};
}
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(Object.assign({}, contentActions, userActions), dispatch),
};
}
export default connect(mapStateToProps, mapDispatchToProps)(DrillPage);
最佳答案
也许您可以尝试一种不使用 React 生命周期的解决方案,并在您的 sagas
中处理您的逻辑,因为据我所知,您正在使用 componentWillReceiveProps
来触发其他 API 调用仅当您有 userId
关于javascript - 如果 API 响应太快,React componentWillReceiveProps 检查不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47313089/
我正在使用使用 ReactSwipableView 包的 Material ui SwipeableViews,我在控制台上收到此错误 react-dom.development.js:12466 W
在我的其他类中,componentWillReceiveProps 工作得很好,但由于某种原因,它在这里没有触发。 ItemView.jsx class ItemView extends React.
我对 React 开发还很陌生,但我已经使用 React+Redux 开发了 3 个大项目,并且我看到了一个我非常不喜欢的模式: componentWillReceiveProps(nextProps
我在构造函数中定义了一个状态,就像这样 this.state={ datainaccordion:'', }; 现在在我的 componentWil
我有以下组件代码: var Answer = React.createClass({ getInitialState: function(){ return { comments:
我在 React 中遇到了一个大问题 - 可能是缺乏理解。我有一个进行回调的子组件,并具有一个 componentWillReceiveProps 函数。问题是我无法在 child 持有的文本输入上书
我最近想升级我的知识React ,所以我从组件生命周期方法开始。让我好奇的第一件事是这个componentWillReceiveProps .所以,文档说当组件接收新的(不一定是更新的) Prop 时
我有以下高阶组件来在我的组件上创建一个负载: import React, {Component} from 'react'; import PropTypes from 'prop-types'; i
我正在尝试在收到新 Prop 后立即更新子组件。但是,我的子组件中的 componentWillReceiveProps() 在 Prop 实际更新之前被调用。看完this article我明白为什么
在我的子组件中使用以下方法更新 Prop 更改状态,效果很好 componentWillReceiveProps(nextProps) { // update original state
我的直觉告诉我不行,但我很难想到更好的方法。 目前,我有一个显示项目列表的组件。根据提供的 props,此列表可能会发生变化(即过滤更改或上下文更改) 例如,给定一个新的 this.props.typ
所以我是 react 新手,想知道如何创建一个传递一些参数的页面并根据这些参数获取文档。但是,当我尝试使用 componentWillReceiveProps 时,我发现它没有运行,我不知道为什么。那
我是 React 新手,正在经历 React 的生命周期,但是我对 componentWillReceiveProps 的使用有点困惑。 谁能解释一下在什么情况下应该使用它。 谢谢。 最佳答案 当 p
我有一个由react-router (path="profile/:username") 加载的Profile 组件,该组件本身如下所示: ... import { fetchUser } from
这个问题已经有答案了: Can getDerivedStateFromProps be used as an alternative to componentWillReceiveProps (1 个
我通读了https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-p
我是 React/Redux 新手,并且对状态有疑问。 TrajectContainer.jsx class TrajectContainer extends React.Component {
我有一个组件,它由父组件通过传递 prop 来更新。在 componentWillReceiveProps 中,我想更改一个状态(availableData),其中包含来自 prop(newData)
在我拥有的组件中,我使用 componentWillReceiveProps() 异步设置组件中的多个状态。父组件正在向该子组件发送新的 props。我的期望是,每当 child 获得新的 Prop
我有一个连接到 redux 存储的组件,并且有一个如下所示的代码块: if (this.props.person !== nextProps.person) { ... } else {
我是一名优秀的程序员,十分优秀!