【问题标题】:React Animation on state change对状态变化做出反应动画
【发布时间】:2020-05-18 07:47:48
【问题描述】:

状态改变时,元素根据当前数组切换位置。我想添加一个动画来显示交换发生的过渡是否有一种简单的方法可以做到这一点。

   const bubbleSort = async () => {
      let arr = test;
      for(let i=0;i<arr.length;i++){
        for(let j=0;j<arr.length-1-i;j++){
          setActiveIndex([j,j+1]);

           if(arr[j]>arr[j+1]){
              let temp = arr[j];
              arr[j] = arr[j+1];
              arr[j+1] = temp;

           }
           await sleep(1000);

           setTest([...arr]);
        }
        setSortedIndex(test.length-1-i);
      }

【问题讨论】:

  • 我认为您可以使用 componentDidUpdate 对上一个和当前状态执行某些操作,以使用“oldArr”和“newArr”重新呈现页面,然后设置动画输入/输出的特定选择器。但我没有自己测试。
  • 如果上述建议有效,请发布您的解决方案
  • 你看起来像这样吗?images.app.goo.gl/29tJLLGHw7L4nTqu5
  • 嗨 @Alex 是的,我正在寻找类似的东西,但有一个交换动画
  • 嗨@MatanSanbira 我不确定在这里做什么,如果你能重现解决方案,你可以发布一些东西谢谢

标签: javascript html css reactjs css-animations


【解决方案1】:

setState() 有一个可选参数,它是一个回调函数,它在状态变化时执行,您可以在那里执行所需的操作。

this.setState({
     currentMonth: +this.state.currentMonth + 1
    }, () => {
     //This is the call back function, perform the desired actions here.
    })
}

【讨论】:

  • 不是我要找的过渡动画需要在状态改变之前发生
  • componentWillUpdate() 是我们处理配置更改并为下一次渲染做准备的机会。如果我们想访问旧的 props 或 state,我们可以调用 this.props 或 this.state。然后我们可以将它们与新值进行比较,并根据需要进行更改/计算。
  • 我需要在状态改变之前的动画,一旦它被触发到最终值
  • 如果您有其他组件在其中将值作为道具传递,请使用 componentWillReceiveProps() 否则 componentWillUpdate() 可以正常工作,您可以分别访问新旧道具和状态,您可以根据那。 engineering.musefind.com/…
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
相关资源
最近更新 更多