【问题标题】:How to make mixins work in react es6?如何使 mixins 在 React es6 中工作?
【发布时间】:2016-09-26 09:47:22
【问题描述】:

我正在学习流星和 reactjs。我遇到过混合功能。我正在使用删除 mixin 的 es6。我现在如何在我的 react es6 代码中享受 mixins 的功能?

这是代码

使用的mixins

Signupform = React.createClass({
    mixins: [ReactMeteorData],
    getMeteorData(){
        let data = {};
        data.currentUser = Meteor.user();
        return data;
    },
    getInitialState(){
        return {
            message: '',
            messageClass: 'hidden'
        }
    },
    render(){

    }
});

不能使用 mixins,我怎样才能使这段代码工作

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

export default class SignupForm extends Component {
    constructor(props){
        super(props);
        this.state = {
            message:'',
            messageClass:''
        }
        this.handleSubmit = this.handleSubmit.bind(this);
    }

    getMeteorData(){
            let data = {};
            data.currentUser = Meteor.user();
            console.log('data',data);
            return data;
        }

    render(){
        return(
            )
    }
}

在其他几个组件中使用了相同的 mixins。我正在关注使用流星和 reactjs 构建社交网络的教程。

【问题讨论】:

标签: javascript meteor reactjs ecmascript-6 ecmascript-5


【解决方案1】:
const ReactMeteorDataWrap = (BaseComponent)=>{
    return class ExportClass extends Component { 
        getMeteor(){
            //todo::some code to get Metor
        }
        render(){
            return <BaseComponent getMeteor={()=>this.getMeteor()} 
                 {...this.props}></BaseComponent>
        }
    }
}

export default ReactMeteorDataWrap 

你可以像这样使用它

 class SignupForm extends Component {
    constructor(props){
        super(props);
        this.state = {
            message:'',
            messageClass:''
        }
        this.handleSubmit = this.handleSubmit.bind(this);
    }

    getMeteorData(){
            let data = {};
            data.currentUser = this.props.getMeteor().user();
            console.log('data',data);
            return data;
        }

    render(){
        return(
            )
    }
}
export default ReactMeteorDataWrap(SignupForm)

【讨论】:

  • 如果我想调用这个 SignupForm 组件,我现在应该怎么做?我还能用 import SignupForm from '../signup/SignupForm.jsx' 来调用它吗?因为现在导出默认 ReactMeteorDataWrap 使用?
  • 使用没有区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 2017-05-06
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2021-08-07
相关资源
最近更新 更多