首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出对象名称,而不是使用jsx语法

输出对象名称,而不是使用jsx语法
EN

Stack Overflow用户
提问于 2014-12-31 01:10:32
回答 2查看 352关注 0票数 1

有了Reactiv0.12,@jsx实用化就消失了,这意味着除了React.METHODNAME语法之外,再也不可能输出任何jsx。

对于我的用例,我试图将React对象包装在另一个对象中,以提供一些方便的方法,因此,在我的组件文件中,我希望能够编写:

代码语言:javascript
复制
var myConvenienceObject = require('React-Wrapper');
var Component = myConvenienceObject.createSpecializedClass({
  render: function () {
    return <div />
  }
})

但是jsx编译器自动地将<div />转换为React.createElement("div", null)

使用较早版本的React,可以使用文件顶部的杂注来处理这个问题。但是,既然已经删除了它,我想知道目前是否有任何方法可以更改jsx编译的对象的名称,以便将<div />转换为myConvenienceObject.createElement("div", null)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-31 02:01:05

不,不再可能为JSX使用自定义前缀。如果您需要这样做,您将需要修改JSX转换代码,或者创建一个假反应。

代码语言:javascript
复制
var React = require('react'), FakeReact = Object.assign({}, React, {
    createElement: function(component, props, ...children){
        // ...

        // eventually call the real one
        return React.createElement(component, props, ...children);
    }
});
module.exports = FakeReact;

然后使用它,你进口假反应,并称之为反应。

代码语言:javascript
复制
var React = require('fake-react');

// ...
    render: function(){ return <div />; }
票数 0
EN

Stack Overflow用户

发布于 2014-12-31 01:24:04

如果希望在myConvenienceObject中包含一些元素,可以考虑使用children道具,如文档中所示。但这可能也需要在myConvenienceObject中进行一些修改,才能接受孩子们。

顺便说一句,我不知道这个createSpecializedClass函数是从哪里来的,它是怎么做的

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

https://stackoverflow.com/questions/27714884

复制
相关文章

相似问题

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