由于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;
}
答案 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
感觉很好,那么您可以发表自己的观点和想法作为答案。