reactjs學習——制作button組件


  前端時間一直在折騰nodejs,好不容易有點搞懂express框架想要作業登錄注冊系統來練練手,路由搞好了,ajax搞好了,頁面也搞好了,興沖沖的准備測試了,麻蛋我忘記世界上有一種東西叫數據庫,還沒連數據庫/(ㄒoㄒ)/~~網上好多都是教mangoDB,又要重新學,搞來搞去沒弄好/(ㄒoㄒ)/~~等我折騰好了再來寫nodejs。

  reactjs太火啦,感覺不去學學有點對不起web工程師的名頭哈哈哈哈哈哈,學了幾天自己做了一個button的組件,和bootstrap那個有點像,先來說說學習reactjs。

  雖然已經火了好久,但是資料還是不是特別多啊,我在學的時候被添加style樣式煩了很久(還是沒弄清楚),然后正式版本又沒出來,facebook一直在改改改,可是國內更新進度跟不上,導致很多資料都是以前版本的,哎,以后還是自己看英文的啦,老子英語這么好不能廢了哈哈哈。

  我學的時候覺得這兩個講的很好,推薦下:

    入門實例教程 - 阮一峰的網絡日志 (!推薦,這個日志會隨版本更新!)這個真的是入門啦,我每個做了兩遍以上,會讓你懂一些基本操作方法,多做幾遍就有感覺了。當然說說入門,要理解react還差遠了,我做完里面的demo其實還是糊里糊塗的,然后噔噔噔就要推薦下面這個了。

    ReactJS 生命周期、數據流與事件 有很多網頁都有寫react組件的生命周期,但我看了以后,覺得這個講的最好!我把他打印下來好好研究了!雖然我現在對銷毀&清理期這部分還是懵逼狀態。

    現在來放下我寫的button組件喲~

    效果:

                            

    代碼:  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ReactButton</title>
    <script type="text/javascript" src="build/react.js"></script>
    <script type="text/javascript" src="build/react-dom.js"></script>
    <script type="text/javascript" src="build/browser.min.js"></script>
    <style type="text/css">
        .box{
            float: left;
            margin:20px;
            }</style>
</head>
<body>
    <div id="Primary" class="box"></div>
    <div id="Success" class="box"></div>
    <div id="Danger" class="box"></div>
    <script type="text/babel">
        var MyReactButton=React.createClass({
            getDefaultProps:function(){
                return{
                    children:'button',
                    pattern:'Primary'
                };
            },
            getInitialState:function(){
                return{
                        opacity:'0.92',
                };
            },
            handleMouseover:function(){
                    this.setState({
                    opacity:1
                });
            },
            handleMouseout:function(){
                this.setState({
                    opacity:'0.92'
                });

            },
            render:function(){
                var styles={
                    Primary:{
                        opacity:this.state.opacity,
                        backgroundColor:'#2e6da4',
                        padding:'6px 12px',
                        color:'#fff',
                        border:'1px solid #2e6da4',
                        borderRadius:'4px',
                        fontSize:'14px',
                    },
                    Success:{
                        opacity:this.state.opacity,
                        backgroundColor:'#4cae4c',
                        padding:'6px 12px',
                        color:'#fff',
                        border:'1px solid #4cae4c',
                        borderRadius:'4px',
                        fontSize:'14px'
                    },
                    Danger:{
                        opacity:this.state.opacity,
                        backgroundColor:'#d43f3a',
                        padding:'6px 12px',
                        color:'#fff',
                        border:'1px solid #d43f3a',
                        borderRadius:'4px',
                        fontSize:'14px'
                    },
                };
                return(
                     <button style={styles[this.props.pattern]} className={this.props.className} onMouseOver={this.handleMouseover} onMouseOut={this.handleMouseout}>{this.props.children}</button>
                     );
             }
        });

        ReactDOM.render(<MyReactButton pattern='Primary'>Primary</MyReactButton>,
        document.getElementById('Primary'));
        ReactDOM.render(<MyReactButton pattern='Success'>Success</MyReactButton>,
        document.getElementById('Success'));
        ReactDOM.render(<MyReactButton pattern='Danger'>Danger</MyReactButton>,
        document.getElementById('Danger'));
    </script>
</body>
</html>

現在來講下疑問:

1)怎么把共有的style屬性提取出來,類似於mixin那樣,這樣有些我就不用重復寫了,可惜我弄了好久還是沒弄明白/(ㄒoㄒ)/~~有知道的說下啊

2)我把jsx文件單獨寫一個文件而不是寫進HTML,可是老是報錯

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM