3

我的 stenciljs 渲染函数目前是用打字稿这样写的:

render() {
  if( this._isInline ) {
    return (
      <span>
        <slot />
      </span>
    );
  } else {
    return (
      <div>
        <slot />
      </div>
    );
  }
}

但我更喜欢这样写:

render() {
  const tag = this._isInline ? 'span' : 'div';
  return (
    <{tag}>
      <slot />
    </{tag}>
  );
}

但这给了我一堆错误信息。

有没有办法编写 jsx 代码,以便我有条件的打开和关闭标签?

4

1 回答 1

4

您可以使用以下代码来实现:

render() {
   const Tag = this._isInline ? 'span' : 'div';
   return (
     <Tag>
       <slot />
     </Tag>
   );
}
于 2018-09-14T11:53:38.720 回答