javascript - 为什么“this”关键字指的是传递的参数?
问题描述
我在下面附上了一个反应代码,但我的问题是关于基本的 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} />
}
}
}
解决方案
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
。
希望对你来说足够清楚。
推荐阅读
- reactjs - React-传单如何在类中创建变量,该变量将根据对象而变化
- android - 如何从 SAF 文件选择器请求中获取文件路径和文件实例?
- android - 如何在 Android 11+ 上使用范围存储访问 /sdcard/Android/media 文件夹?
- python - ModuleNotFoundError:Jupyter Notebook 上没有名为“_tkinter”的模块
- javascript - 我在等待 Nodejs 中的多个异步函数时遇到问题
- java - 是否有 onPlayerJoin 的客户端版本?
- node.js - Next.js 和 SWR:无法通过 SWR 挂钩中的 API Passport 使用户成功登录
- python - 如何将熊猫数据框转换为指定的字典
- java - Eclipse内置Maven时,如何找到Maven的PATH?
- javascript - 如何在javascript中获取以前的url?