Reactjs 输出对象名称,而不是使用jsx语法进行反应
对于React v0.12,@jsx pragma消失了,这意味着除了React.METHODNAME语法之外,再也不可能输出jsx了 对于我的用例,我试图将React对象包装到另一个对象中,以提供一些方便的方法,因此,在我的组件文件中,我希望能够编写:Reactjs 输出对象名称,而不是使用jsx语法进行反应,reactjs,react-jsx,Reactjs,React Jsx,对于React v0.12,@jsx pragma消失了,这意味着除了React.METHODNAME语法之外,再也不可能输出jsx了 对于我的用例,我试图将React对象包装到另一个对象中,以提供一些方便的方法,因此,在我的组件文件中,我希望能够编写: var myConvenienceObject = require('React-Wrapper'); var Component = myConvenienceObject.createSpecializedClass({ render:
var myConvenienceObject = require('React-Wrapper');
var Component = myConvenienceObject.createSpecializedClass({
render: function () {
return <div />
}
})
var myconvenceobject=require('React-Wrapper');
var Component=myConvenenceObject.createSpecializedClass({
渲染:函数(){
回来
}
})
但是,jsx编译器会自动将
转换为React.createElement(“div”,null)
对于较旧版本的
React
,可以使用文件顶部的pragma来处理此问题。但是,由于已经删除了,我想知道目前是否有任何方法可以更改jsx编译的对象的名称,以便
将转换为myconvenceobject.createElement(“div”,null)
,如果您想在myconvenceobject
中包含一些元素,如图所示,可以考虑<代码>儿童< /代码>道具。但这可能也需要对MyConvenenceObject进行一些更改,以接受子对象
顺便说一句,我不确定这个
createSpecializedClass
函数来自何处,它的作用是什么不,不再可能为JSX使用自定义前缀。如果需要这样做,则需要修改JSX转换代码,或者创建一个伪React
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;
然后要使用它,你导入假react并称之为react
var React = require('fake-react');
// ...
render: function(){ return <div />; }
var-React=require('fake-React');
// ...
render:function(){return;}
很抱歉,我不太清楚createSpecializedClass
只是标准React.createClass
方法的包装器的一个示例。不幸的是,我认为您的建议在这种情况下不起作用,因为我仍然无法在组件文件本身中使用jsx。如果您能在这里粘贴一些代码片段,那就太好了。儿童道具也可以是jsx,不限于Strings。非常感谢您提供的信息!我想人们只需要记住在React