简体   繁体   English

ReactJS不能使用组合组件

[英]ReactJS cannot use composed components

Here is my super simple enhancer: 这是我的超级简单增强器:

'use strict';

import React from 'react';

function BaseComponent(ComposedComponent) {
    return class extends React.Component {
        static displayName = "BaseComponent";

        constructor(props) {
            super(props);
        }

        updateState(obj) {
            if (this.isMounted() && obj) {
                this.setState(obj);
            }
        }

        render() {
            return (

                <ComposedComponent {...this.props} {...this.states} />
            )
        }
    }
}

export default BaseComponent;

And I'm enhancing my component as follows: 我正在增强我的组件如下:

'use strict';

import React from 'react';
import BaseComponent from '../composits/Base.jsx';

@BaseComponent
class Home extends React.Component {
    static displayeName = 'Home';

    constructor(props) {
        super(props);
    }

    render() {
        console.log(this.updateState)

        return (
            <div>Hi</div>
        )
    }
}

export default Home

But this does not work! 但这不起作用! console.log(this.updateState) is null . console.log(this.updateState)null What am I doing wrong? 我究竟做错了什么?

EDIT 编辑

Maybe I'm missing something here. 也许我在这里遗漏了一些东西。 By the design I have above, will Home be the "enhanced" component, or BaseComponent ? 通过上面的设计, Home将是“增强”组件,还是BaseComponent On otherwords, would Home have access to BaseComponent methods/states/props or the other way around? 换句话说, Home可以访问BaseComponent方法/状态/道具还是BaseComponent

Give it a name 给它起个名字

function baseComponent(ComposedComponent) {
    return class BaseComponent extends React.Component {
        // ommited
    }
}

 export default baseComponent;

Or try to wrap it 或尝试包装它

'use strict';

import React from 'react';
import BaseComponent from '../composits/Base.jsx';

class Home extends React.Component {
    // ommited
}

export default BaseComponent(Home);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM