reactjs - 动画和 getDerivedStateFromProps

标签 reactjs react-native

随着 componentWillReceiveProps 被弃用并且替换 getDerivedStateFromProps 返回最终状态,我将如何随着时间的推移逐渐改变状态(即为某些东西设置动画)使用新的 getDerivedStateFromProps

使用componentWillReceiveProps,以下工作正常:

state = {
  itemOpacity: new Animated.Value(0.25)
};

componentWillReceiveProps(nextProps) {
  if (this.props.items.visible !== nextProps.items.visible) {

    let value = 0;

    if (nextProps.items.visible) {
      value = 1;
    }

    Animated.timing(this.state.itemOpacity, {
      toValue: value,
      duration: 200,
    }).start();
  }
}

我如何使用getDerivedStateFromProps做这样的事情?或者我的动画模式很愚蠢?

最佳答案

使用 newProps 和 previousState 参数调用 getDerivedStateFromProps。所以你可以使用 previousState 来制作动画:

static getDerivedStateFromProps(nextProps, prevState) {

  let value = 0;
  if (nextProps.items.visible) {
    value = 1;
  }

  Animated.timing(prevState.itemOpacity, {
    toValue: value,
    duration: 200,
  }).start();

  return {
    // update state
  }
}

关于reactjs - 动画和 getDerivedStateFromProps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50641678/

相关文章:

javascript - 如何在 React 中使用数据添加动态字段(Hooks)

javascript - 谷歌地图标记大小与 react

css - 如何使 React CSS 导入组件范围?

reactjs - 混合使用 React 和 Vue 是个好主意吗?

android - Web View 中的 native 登录和应用程序的其余部分

ios - React Native 在 View 的一侧添加边框

react-native - 当应用程序处于后台模式时,React Native socket.io 断开连接

javascript - 将 "Route children"和 "cloneElement"转换为 RouterV4

javascript - React 中未调用自定义钩子(Hook)函数

react-native - React Native 中 WebView 为空