reactjs - React 中带有 'Variants' 的组件 - 条件渲染

标签 reactjs rendering

这里是非常基本的问题。

我正在尝试开始学习 React,我对处理这类事情的最佳设计模式感到好奇。

我有一个按钮组件,我想要应用不同类的组件的“主要”和“次要”变体。以下是解决此问题的最佳方法吗?我正在传递一个定义要使用哪个按钮的“变体” Prop 。

如果这不是最好的解决方案,如果我想要特定组件的“变体”,那会是什么?

谢谢!

class Button extends Component {

render() {

  // --- SECONDARY BUTTON --- //
  if(this.props.variant == 'secondary') {

    return (
      <div className = 'button-wrapper secondary'>
        <div className = 'button'>
          {this.props.text}
        </div>
      </div>
    );

  // --- PRIMARY BUTTON --- //
  }else if(this.props.variant == 'primary') {

    return (
      <div className = 'button-wrapper primary'>
        <div className = 'button'>
          {this.props.text}
        </div>
      </div>
    );
  }
}
}

最佳答案

如果您的区别仅在于className,也许您可​​以通过以下方式实现相同的效果:

render() {
 const { variant } = this.props;
 return (
   <div className = {`button-wrapper ${ variant === 'secondary' ? '' : 'primary' }`}>
     <div className = 'button'>
       {this.props.text}
     </div>
   </div>
 );

关于reactjs - React 中带有 'Variants' 的组件 - 条件渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51824063/

相关文章:

javascript - React 16.7 TypeError : (0 , _react.useState) 不是函数

ASP.NET 主题样式表呈现

java - LWJGL 加速渲染

c++ - 如果我没有 VK_KHR_swapchain 扩展,我该如何运行 Vulkan API?

html - 我可以在 SSRS 2005 中从 SQL 数据库呈现 HTML 吗?

php - 渲染 javascript 文件,同时将其作为静态文件使用

javascript - 悬停在 MouseEnter 和 onMouseLeave React 上不起作用。超出最大调用堆栈大小

javascript - React js主组件中的身份验证

javascript - 元素类型无效: expected a string (for built-in components) … Check the render method of `App`

javascript - 在 React 中,如何从 Last.fm API 中转义 Hash 标签