React 组件协同之Mixin

1、Mixin的含义
Mixin = 一组方法(函数)
Mixin的目的是横向抽离出组件的相似代码
相似概念:面向切面编程、插件
2、优缺点
优点:
代码复用:抽离出通用代码,减少开发成本,提高开发效率
即插即用:可以直接使用许多现有的Min新来编写自己的组件
适应性强:改动以此代码,影响多个组件
缺点:
编写难度高:Mixin可能被用在各种环境中,兼容多种环境就需要更多的逻辑和代码,通用的代价是提高复杂度
降低代码可读性:组件的优势在于将逻辑和界面直接结合在一起,Mixin本质上会分赛逻辑,理解起来难度更大
3、实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Mixin实例--用Mixin实现数据双向绑定</title>
</head>
<body>
<script src="../jquery-3.3.1.js"></script>
<script src="../react.js"></script>
<script src="../react-dom.js"></script>
<script src="../JSXTransformer.js"></script>
<script type="text/jsx">
    /*方法一:不是用Mixin实现数据的双向绑定
    var BindingExample = React.createClass({
        getInitialState:function () {
            return{
                text:'',
            }
        },
        handleChange:function (event) {
            this.setState({
                text: event.target.value,
            })
        },
        render:function () {
            return <div>
                <input type="text" onChange={this.handleChange}/>
                <p>{this.state.text}</p>
            </div>
        }
    });*/
    /*方法二:使用Mixin进行优化*/
    var BindingMixin ={
        handleChange:function (key) {
            var that = this;
            return function (event) {
                var newState={};
                newState[key]=event.target.value;
                that.setState(newState);
            }
        }
    };
    var BindingExample = React.createClass({
        mixins:[BindingMixin],
        getInitialState:function () {
            return{
                text:'',
            }
        },
        render:function () {
            console.log(this.state);
            return <div>
                <input type="text" placeholder="请输入内容" onChange={this.handleChange('text')}/>
                <p>{this.state.text}</p>
            </div>
        }

    });
    ReactDOM.render(<BindingExample/>,document.body);

</script>
</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React函数组件是一种纯粹的JavaScript函数,它接收一个props对象作为参数并返回一个React元素。以下是编写React函数组件的步骤: 1. 导入React库 首先要在代码中导入React库。我们可以使用ES6的import语句导入React库,也可以使用CommonJS的require语句导入React库。 ```javascript import React from 'react'; ``` 或者 ```javascript const React = require('react'); ``` 2. 创建函数组件 创建一个函数组件,它接收一个props对象作为参数,并返回一个React元素。你可以将这个组件的函数定义放在一个单独的文件中,或者在同一个文件中定义多个组件。 ```javascript function MyComponent(props) { return ( <div> <h1>{props.title}</h1> <p>{props.description}</p> </div> ); } ``` 3. 导出函数组件 将函数组件导出,以便其他组件可以使用它。 ```javascript export default MyComponent; ``` 4. 使用函数组件 在其他组件中使用函数组件,传递props对象作为参数。 ```javascript import React from 'react'; import MyComponent from './MyComponent'; function App() { return ( <div> <MyComponent title="Hello, World!" description="This is my first React component." /> </div> ); } export default App; ``` 这就是编写React函数组件的基本步骤。要注意的是,函数组件只能接收props对象作为参数,并且不能使用状态(state)或生命周期方法。如果需要使用状态或生命周期方法,应该使用类组件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值