[英]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.