我在下面附加了一个react代码,但是我的问题是关于基本JavaScript的。我正在创建一个更高阶的组件,并将先前创建的组件作为参数传递给另一个组件,而我真正无法理解的是为什么“ this”关键字引用WrappedComponent?它可以正常工作,但这就是问题,我不知道它是如何工作的。
如果您能解释下面的情况,将非常高兴:
import React from 'react';
const LoadingHOC = (WrappedComponent) => {
return class LoadingHOC extends React.Component{
render() {
return this.props.userName === "" ? "Loading..." : <WrappedComponent {...this.props} />
}
}
}
答案 0 :(得分:2)
this
类中的 LoadingHOC
引用该类的实例。
请考虑以下内容:
import React from 'react';
const LoadingHOC = (WrappedComponent) => {
return class LoadingHOC extends React.Component{
render() {
return this.props.userName === "" ? "Loading..." : <WrappedComponent {...this.props} />
}
}
}
const DummyComponent = (props) => (<div>{props.username}</div>);
const EnhancedComponent = LoadingHOC(DummyComponent);
LoadingHOC(DummyComponent)
调用您声明的LoadingHOC
函数,并返回您在函数内部描述的LoadingHOC
类。因此,请执行以下操作:
<EnhancedComponent username="john"/>
将导致使用LoadingHOC
实例化username
类,并将其传递给WrappedComponent
自变量,在我们的示例中为DummyComponent
。
希望对您足够清楚。
答案 1 :(得分:-2)
这个 关键字具有以下用法: