首页 > 其他 > 详细

[React] React Fundamentals: Mixins

时间:2015-03-25 19:10:49      阅读:207      评论:0      收藏:0      [点我收藏+]

Mixins will allow you to apply behaviors to multiple React components.

 

Components are the best way to reuse code in React, but sometimes very different components may share some common functionality. These are sometimes called cross-cutting concerns. React provides mixins to solve this problem.

https://facebook.github.io/react/docs/reusable-components.html

 

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React Lesson 12: Mixins</title>
    <script src="http://fb.me/react-0.8.0.js"></script>
    <script src="http://fb.me/JSXTransformer-0.8.0.js"></script>
    <style>
        body {
            margin: 25px;
        }
    </style>
</head>
<body>
<div id="panel"></div>
<script type="text/jsx">
    /** @jsx React.DOM */

    var ReactMixin = {
        componentWillMount: function(){
            console.log("will mount")
        },
        getInitialState:function(){
            return {count:0}
        },
        incrementCount:function(){
            this.setState({count:this.state.count+1})
        }
    };

    var APP = React.createClass({

        render: function(){
            return (
                    <div>
                        <ButtonComponent val="This is a button"></ButtonComponent>
                        <InputComponent val="this is a input"></InputComponent>
                    </div>
            );
        }
    });

    var ButtonComponent = React.createClass({
        mixins: [ReactMixin],
        render: function(){
            return (
                    <button onClick={this.incrementCount}>{this.props.val} -- {this.state.count}</button>
            );
        }
    });

    var InputComponent = React.createClass({
        mixins: [ReactMixin],
        //Can double the function in the mixin, React will combine both
        componentWillMount: function(){
            this.inc = setInterval(this.incrementCount, 500);
        },
        unmount: function() {
            this.componentWillUnmount();
        },
        render: function() {
            return (
                    <div>
                    <input type="text" value={this.props.val + -- + this.state.count}/>
                    <button onClick={this.unmount}>unmount</button>
                    </div>
            );
        },
        componentWillUnmount: function() {
            clearInterval(this.inc);
        }
    });

    React.renderComponent(
            <APP />,
            document.getElementById(panel))

</script>
</body>
</html>

 

[React] React Fundamentals: Mixins

原文:http://www.cnblogs.com/Answer1215/p/4366237.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!