首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强是如何反应的?

增强是如何反应的?
EN

Stack Overflow用户
提问于 2018-07-05 12:17:17
回答 4查看 700关注 0票数 2

我有以下组件

代码语言:javascript
复制
const MyComp = () => <div>abc</div>;

将被呈现为

代码语言:javascript
复制
<div>abc</div>

我希望MyComp组件的元素类型是动态的,如果将该组件用作<MyComp as='a' />,则应该将该组件呈现为<a>abc</a>。我见过这在Sementic中被使用,他们称之为模式元素增强。我对此进行了搜索,但找不到任何有用的东西。如何做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-05 12:31:19

如果JSX中的标记名以大写字母开头,那么这将被视为标识符。此标识符通常是用户定义的react组件,但也可以是一个字符串,并将呈现一个“叶子”react组件,即DOM节点。

为了得到你想要的行为:

代码语言:javascript
复制
const MyComp = ({ as: Component = 'div' }) => <Component>abc</Component>;
票数 4
EN

Stack Overflow用户

发布于 2018-07-05 12:34:06

您要寻找的术语是呈现动态组件

你可以做点什么

代码语言:javascript
复制
    render() {
    const ComponentToRender = this.props.as;
    return (
        <a><ComponentToRender /></a>
    )
}

当你的道具在一个常量中得到值时,这个常数就可以作为一个反应组件呈现出来。

票数 3
EN

Stack Overflow用户

发布于 2018-07-05 12:22:03

编辑: accurate是正确的,确切的术语是“动态组件”,这是定义这个概念的一种更精确的方法,尽管动态呈现的组件是由HOCs呈现的。

“呈现为”是一种过度简化的过程,以帮助心理表征。实际上,您有一个高阶组件,它将呈现另一个组件( "as“),并将额外的道具传递给它。

因此,它的返回值实质上是"as“元素。

例如,请看一下按钮组件源代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51191111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档