【问题标题】:Show Json Value Consecutively with Material-UI Transition使用 Material-UI 过渡连续显示 Json 值
【发布时间】:2021-06-27 20:34:48
【问题描述】:

我有一个来自 API 的 json 数组。

"fruits": [
    {
      "id": "1",
      "fruit": "APPLE",
    },
    {
      "id": "2",
      "fruit": "BANANA",
    },
    {
      "id": "3",
      "fruit": "CHERRY",
    },
    {
      "id": "4",
      "fruit": "GRAPE",
    }
  ]

我想用Material-UI Fade 转换连续显示fruits。

首先fruit应该出现,然后它应该消失,然后,下一个fruit应该出现然后消失。 当所有fruits 都显示完毕后,应该从头开始。

我怎样才能做到这一点?

类似这样的:

{fruit && fruit.map((item) =>(
  <Fade in={x} >
    <div className={styles.fruitContainer}>
      <p className={styles.fruitName}>{item.fruit}</p>
    </div>
  </Fade>
))}

P.S.:水果数量(物体数量)可能会有所不同。

【问题讨论】:

    标签: javascript reactjs material-ui next.js


    【解决方案1】:
    import React from "react";
    import Fade from "@material-ui/core/Fade";
    
    export default function SimpleFade() {
      const [id, setId] = React.useState(1);
    
      const data = {
        fruits: [
          {
            id: "1",
            fruit: "APPLE"
          },
          {
            id: "2",
            fruit: "BANANA"
          },
          {
            id: "3",
            fruit: "CHERRY"
          },
          {
            id: "4",
            fruit: "GRAPE"
          }
        ]
      };
    
      React.useEffect(() => {
        const interval = setInterval(() => {
          setId((prevId) => (prevId < data.fruits.length ? prevId + 1 : 1));
        }, 1000);
        return () => clearInterval(interval);
      }, [data.fruits.length]);
    
      return (
        <div>
          {data.fruits.map((fruit) => (
            <Fade in={parseInt(fruit.id, 10) === id} key={`fader_${fruit.id}`}>
              <p>{fruit.fruit}</p>
            </Fade>
          ))}
        </div>
      );
    }
    

    https://codesandbox.io/s/material-demo-forked-m2xvg?file=/demo.js

    这样的?如果他们需要在同一个地方,则需要样式。

    【讨论】:

    • 是的,完美。非常感谢您的参与。我希望他们在同一个地方。 position:'absolute' 没用。你知道我怎样才能把它们放在同一个地方吗?
    • Fade 转换实际上看不到,in 参数更改无法纠正Fade 转换。有没有办法减慢转换速度?
    • 动画时间可以通过timeout参数设置,例如:&lt;Fade in={parseInt(fruit.id, 10) === id} key={`fader_${fruit.id}`} timeout={{ enter: 1000, exit: 1000 }}&gt;
    • 对于样式,请尝试同时添加 position: 'absolute'top: 0px,不确定这是否是您的用例的最佳解决方案,但适用于示例。
    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多