reactjs - 是否可以获得当前 JSX 标签的类型?
问题描述
例如,如果我有类似的东西:
<TouchableOpacity style={getStyle(component where this style belong to 'TouchableOpacity')}>
我想传递给getStyle
调用函数的函数组件。
如果我通过this.constructor.name
了,我会得到组件的屏幕,但不知道如何获取TouchableOpacity
.
我想以通用方式使用它,所以我不需要总是编写组件字符串。
这可能吗?
解决方案
您已经知道组件名称或类,因此您可以直接传递它
<TouchableOpacity
style={getStyle(TouchableOpacity || 'TouchableOpacity')}
>
getStyle()
您的函数无法知道您的组件并自己找出它,因为此函数在您的组件创建之前被调用并完成。
更详细的声明<TouchableOpacity>
——实际上是函数的调用——所以可以用f1()
. 并且getStyle()
可以替换为f2()
.
所以你在问,如何在函数中知道f2()
哪个函数使用它的结果(的结果f2()
)作为参数。在下一个声明中:
f1(f2())
所以答案是否定的。
但是,如果您如上所述通过,getStyle(TouchableOpacity)
您可以获得组件的标签名称或显示名称,如下所示:
function getStyle(component) {
console.log('tag name:', component.type.name)
console.log('display name:', component.type.displayName)
}
getStyle(TouchableOpacity)
推荐阅读
- speech-recognition - 如何在 Google 控制台上的操作中启用语音输入?
- python - 多个套接字连接而无需每次都重新打开一个新套接字
- go - 来自go源的这段代码是什么意思?喜欢 (*(*float32)(v.ptr))
- ruby-on-rails - 带有 content_for javascript 头的 simple_form 自定义输入?
- html - 可滚动侧边栏中的 Flexbox 粘性页脚
- android - 单击时更新按钮的不透明度?扑
- android - 如何在 NativeScript 中从 Android 内容 URI 打开文件?
- javascript - 使用 XMLHttpRequest 从函数调用时,函数按预期工作,但使用 EventSource 从函数调用时失败。为什么是这样?
- node.js - Populate() Mongoose 不返回连接数据
- c - 有什么方法可以使用#define 指令来定义 printf 函数?