【问题标题】:React transition反应过渡
【发布时间】:2021-03-06 22:20:11
【问题描述】:

我正在尝试在切换转换中映射幻灯片并收到错误“错误:React.Children.only 预期会收到单个 React 元素子项。”

我做错了什么?

Slider.Body = function SliderBody({ data, children, ...rest }) {
  return (
    <SwitchTransition mode={"out-in"}>
      <TransitionGroup>
        {data.map((item) => {
          return (
            <CSSTransition classNames="fade" key={item.image}>
              {item.toString()}
            </CSSTransition>
          );
        })}
      </TransitionGroup>
    </SwitchTransition>
  );
};

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    将要映射的数据包装在一个 div 中。所以它应该看起来像这样 -

    Slider.Body = function SliderBody({ data, children, ...rest }) {
      return (
        <SwitchTransition mode={"out-in"}>
          <TransitionGroup>
            <div>
            {data.map((item) => {
              return (
                <CSSTransition classNames="fade" key={item.image}>
                  {item.toString()}
                </CSSTransition>
              );
            })}
            </div>
          </TransitionGroup>
        </SwitchTransition>
      );
    };
    

    【讨论】:

      【解决方案2】:

      问题是&lt;TransitionGroup&gt; 组件中不能有多个项目,因此解决方案是将映射函数包装在HTML element 中。

      您也可以使用&lt;React.Fragment&gt; 并将您的地图函数包装在其中。

      让我们看一下使用&lt;React.Fragment&gt;的例子:

      Slider.Body = function SliderBody({ data, children, ...rest }) {
        return (
          <SwitchTransition mode={"out-in"}>
            <TransitionGroup>
              <React.Fragment>
              {data.map((item, i) => {
                return (
                  <CSSTransition classNames="fade" key={i}>
                    {item.toString()}
                  </CSSTransition>
                );
              })}
              </React.Fragment>
            </TransitionGroup>
          </SwitchTransition>
        );
      };
      

      你可以找到更多关于 Fragments here.

      【讨论】:

      • 但现在我的滑块改为滑动什么都不做:c
      • 你能做一个沙箱并隔离问题吗?帮不了你。
      • 很难将我的项目放入沙盒中,但我有 ps prnt.sc/vowp6m :3 和 prnt.sc/vowq21
      • 只是忽略我的滑块容器并添加具有转换组类的秒
      • 尝试在转换组中添加 key="transition-group-content",如here
      猜你喜欢
      • 2017-01-18
      • 2018-04-26
      • 1970-01-01
      • 2017-10-07
      • 2020-07-25
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多