javascript - ReactJS - 有条件地渲染空白

标签 javascript reactjs typescript html-entities

我正在尝试构建一个按钮组件,它能够在元素的子元素之前和之后设置图标。

因此, Prop 是这样的:

export interface IButtonProps {
    children?: React.ReactNode;
    leftIcon?: FontAwesomeIcon;
    rightIcon?: FontAwesomeIcon;
}

鉴于FontAwesomeIcon是一个包含可用图标的枚举。

在按钮的 render 中-功能我会检查是否有图标集。如果是这样,应该有图标和子项与图标之间的空格。

render(): JSX.Element {
    let { children, leftIcon, rightIcon } = this.props;

    return (
        <button>
            {leftIcon && <FontAwesome icon={leftIcon} />}
            {leftIcon && " "}
            {children}
            {rightIcon && " "}
            {rightIcon && <FontAwesome icon={rightIcon} />}
        </button>
    );
}

虽然这个解决方案有效,但我想知道是否有比必须检查两次以设置图标更简单的方法。我也想有能力使用 &nbsp;而不是 . 有没有什么办法可以转义空格,这样我就可以写出类似 {leftIcon && <FontAwesome icon={leftIcon} />&nbsp;} 的东西?

我试过了 {leftIcon && <FontAwesome icon={leftIcon} />{"&nsbp;"}}{leftIcon && <FontAwesome icon={leftIcon} />{&nsbp;}}这导致

TS1005: '}' expected.

最佳答案

本文建议&nbsp;应该适用于有意留白 http://andrewhfarmer.com/how-whitespace-works-in-jsx/

看到你应该能够插入 &nbsp;与其他 HTML 内联 我原以为您不需要将其包裹在方括号或字符串中。想象一下就像写 <br />你应该能够将它粘到 <FontAwesome /> 的末尾组件。

render(): JSX.Element {
  let { children, leftIcon, rightIcon } = this.props;

  return (
    <button>
        {leftIcon && <FontAwesome icon={leftIcon} />&nbsp;}
        {children}
        {rightIcon && &nbsp;<FontAwesome icon={rightIcon} />}
    </button>
  );
}

免责声明,这是未经测试的

作为替代方案,这个 github 问题 https://github.com/facebook/react/issues/1643建议您可以添加 {' '}对于有意的空白,所以我认为这也会起作用:

render(): JSX.Element {
  let { children, leftIcon, rightIcon } = this.props;

  return (
    <button>
        {leftIcon && <FontAwesome icon={leftIcon} />{' '}}
        {children}
        {rightIcon && {' '}<FontAwesome icon={rightIcon} />}
    </button>
  );
}

免责声明,同样未经测试

关于javascript - ReactJS - 有条件地渲染空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46558311/

相关文章:

node.js - Node 8 的推荐 typescript 配置

oop - 派生类的不同构造函数签名

javascript - 警告消息将无法使用 jquery

javascript - FixedDataTable组件的“You must set either a height or a maxHeight”错误

javascript - Animate 不适用于 React 中的 whileHover

reactjs - React 在父级状态更改后更新子级的 props

angular - 为什么我的 API 管理不使用 AD B2C 自动化我的应用程序?

javascript - 如何使用 javascript 选择下拉项

javascript - 我可以将 javascript 对象数据渲染到 c3js 图表中吗?

javascript - API 速率限制是否将 javascript 请求视为来自域的 IP 或用户的 IP?