可选择的DOM元素的React按钮组件

2016-05-31  本文已影响753人  MakingChoice

昨晚想了一个可选择的DOM元素的React按钮组件,组件内置了两个DOM元素,除了内置的DOM元素,还可以在<code>Render()</code>渲染的时候,添加可选项来自定义Dom元素。<p>
直接上code

import React from 'react';
import ReactDOM from 'react-dom';
const Button=React.createClass({
//设置props验证方式
    propsTypes:{
          component:React.PropTypes.node,
          classn:React.PropTypes.string,
          active:React.PropTypes.bool,
          href:React.PropTypes.string,
          disabled:React.PropTypes.bool,
          target:React.PropTypes.string
    },
//props默认属性
   getDefaultProps(){
        return{
            active:true,
            disabled:true
        }
    },
//初始化状态
   getInitialState(){

   },
//默认<a></a>的渲染
   renderADom(classname){
       let{
             href,
             component:Component,
             children,
             props 
        }=this.props;
        Component=Component||'a';//默认a标签
        href=href||'#'
        return <Component {...props}  href={href} className={classname}>
                  {children}
          </Component>
   },
//默认<button></button>的渲染
   renderButtonDom(classname){
      let{
          href,
          component:Component,
          children,
          props
      }=this.props;
      Component=Component||'button';
      return <Component {...props} className={classname}>
              {children}
      </Component>
   },
  render(){
      let{
        href,
        active,
        target,
        classn
      }=this.props;
      let renderType=href || target?'renderADom':'renderButtonDom';//默认渲染button标签
      return this[renderType](classn)
  }
})
export default Button

index.js文件

import React from 'react';
import ReactDOM from 'react-dom';
import Button from './components/Button';
//下面这个是渲染a标签,className是success类名
ReactDOM.render(<Button classn={"success"} target={"a"}/>,document.getElementById('app'))
//下面这个是默认渲染button标签,className是fail类名
ReactDOM.render(<Button classn={"fail"} />,document.getElementById('app'))
//下面这个是渲染a标签,className是fail类名 链接设置href
ReactDOM.render(<Button classn={"fail"}  target={'a'} href={http://'www.baidu.com'} />,document.getElementById('app'))
//下面这个渲染是自定义的span标签
ReactDOM.render(<Button classn={"fail"}  component={'span'}/>,document.getElementById('app'))
上一篇 下一篇

猜你喜欢

热点阅读