应该组件更新中的突变状态反应16.6.3

时间:2018-11-26 12:50:45

标签: javascript reactjs redux

由于react已弃用了许多Lifecycle Methods,因此我发现,当使用 ObjectAnimator animX = ObjectAnimator.ofFloat(textView, View.SCALE_X, 0f); ObjectAnimator animY = ObjectAnimator.ofFloat(textView, View.SCALE_Y, 0f); AnimatorSet animSetXY = new AnimatorSet(); animSetXY.playTogether(animX, animY); animSetXY.setDuration(500); animSetXY.start(); if (goAnimation == null) { goAnimation = new ScaleAnimation( 1f, 0f, // Start and end values for the X axis scaling 1f, 0f, // Start and end values for the Y axis scaling Animation.RELATIVE_TO_SELF, 0.5f, // Pivot point of X scaling Animation.RELATIVE_TO_SELF, 0.5f); // Pivot point of Y scaling goAnimation.setFillAfter(false); // Needed to keep the result of the animation goAnimation.setDuration(300); } textView.startAnimation(goAnimation); goAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { textView.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }); 时,当我想扩展redux的局部状态时,我正在使用{ {1}}。问题是只有connect被传递给该函数。

那意味着我在component生命周期内只有componentDidUpdate

对我来说,执行以下操作本质上是错误的:

prevProps, prevState

这肯定是nextProps, nextState,我不应该这样做。

然后如何在不使用shouldComponentUpdate的情况下获得 shouldComponentUpdate(nextProps) { const { status_status } = nextProps; if(status_status === "error") { this.props.dispatch(resetStatus()); } return true; }

1 个答案:

答案 0 :(得分:0)

我遇到过类似的情况,我发现getDerivedStateFromProps在这种情况下有用且合适。

static getDerivedStateFromProps(props, state) {
  // now, you may dispatch checking the condition
  // BTW, you will dispatch just using props
  // props.dispatch()
  // this.props.dispatch() // invalid
}

我从docs那里知道这个笔记:

  

如果您需要因道具更改而产生副作用(例如,数据获取或动画),请改用componentDidUpdate生命周期。

但是我只是分享我的经验,只有getDerivedStateFromProps工作的情况。

但是,我也建议您首先使用componentDidUpdate挂钩。如果一切对您都有利,那就坚持下去。或者,如果您也使用componentDidUpdate面对并且使用getDerivedStateFromProps感觉很好,那么您可以发表自己的观点和想法作为答案。