微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据条件渲染其中一个孩子

如何解决根据条件渲染其中一个孩子

我正在尝试为条件渲染创建一个 switch HOC,它的行为类似于 ReactTS 中的 switch 语句

<Switch>
    <Case condition={cond1}>
        Hello
    </Case>
    <Case condition={cond2}>
        World
    </Case>
    <Default>
         Hi stranger
    </Default>
</Switch>

如果 cond1 为真,则渲染“Hello”。
如果 cond1 为假但 cond2 为真,则渲染“世界”。
如果这两个条件都为假,则呈现“嗨陌生人”。

解决方法

我在 JS 中创建了三个文件进行测试,一切正常。

Switch.js

class Switch extends React.Component {
  getComponentToRender() {
    return React.Children.toArray(this.props.children).find(function (child) {
      if (child.type.name === "Case") {
        if (child.props.condition) {
          return true;
        }
      }
      if (child.type.name === "Default") {
        return true;
      }
      return false;
    });
  }

  render() {
    return this.getComponentToRender();
  }
}

export default Switch;

Case.js -> 需要确保这个组件的条件为布尔值。

export default function(props) {
  return props.children;
}

默认.js

export default function(props) {
  return props.children;
}

使用上述文件作为

<Switch>
        <Case condition={false}>Hello</Case>
        <Case condition={false}>World</Case>
        <Default>Hi</Default>
      </Switch>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?