如何从我的Javascript代码中加载用JSX代码编写的react组件

How to load a react component written in JSX code from my Javascript code

本文关键字:代码 JSX 组件 react 加载 我的 Javascript      更新时间:2023-09-26

我是reactjs的新手,如果我不能正确地表达这个问题,请原谅。所以我有这个jsx脚本文件,它在加载后立即将我的react组件呈现到我的视图中。最初在这个脚本文件中,我没有任何数据可以显示在我的组件中,所以我不渲染任何子组件。然而,在稍后的某个时刻,当我从web服务接收数据时,我非常希望用这些数据再次呈现组件。

我的JSX脚本文件中的组件没有状态,它只是用来显示我传递给它的数据

JSX脚本加载良好,并在最初没有在JSX文件本身中指定数据的情况下呈现组件。然而,当我试图在另一个Javascript文件中再次呈现该组件时,它会给我一个引用错误,即组件未定义。

JSX国家/***@JSX React.DOM*/是否创建了一个完全不同的命名空间?如果是,我如何访问它?以及用JSX脚本文件外部的新数据重新渲染组件的最佳方法是什么。提前感谢!:)

/**已编辑*/伙计们,很抱歉没有添加代码。。相反,让我把问题简单化。。如何从javascript文件访问jsx脚本中的react组件?

/**已编辑*/好了,伙计们,这里有一个代码示例:

 var Avatar = React.createClass({
 render: function() {
 return (
  <div>
    <ProfilePic username={this.props.username} />
    <ProfileLink username={this.props.username} />
  </div>
 );
 }
 });
var ProfilePic = React.createClass({
render: function() {
return (
  <img src={'http://graph.facebook.com/' + this.props.username + '/picture'} />
);
}
});
var ProfileLink = React.createClass({
render: function() {
return (
  <a href={'http://www.facebook.com/' + this.props.username}>
    {this.props.username}
  </a>
);
}
});
React.render(
<Avatar username="pwh" />,
document.getElementById('example')
 );

因此,上面的代码可以嵌入到指定为jsx脚本的html标记中,也可以从外部加载。注意Avatar元素中的username道具(继承中反应最快的组件),问题是我们如何用不同的用户名在另一个javasccript文件中重新构建Avatar组件?一切都很好,如果你这样设置并运行。第一次加载组件时,它将pwh设置为用户名。但是,我如何从我的javascript(即在jsx脚本之外)访问这个元素,并用新的用户名值重新发送它?这可能吗?

我认为您在执行纯JS文件时遇到了b/c问题,JSX文件仍在由JSXTransformer翻译,因此浏览器尚未处理。因此,JSX文件中的符号尚未定义

我推荐两种方法:

出于开发/原型的目的:将/** @jsx React.DOM */也添加到普通JS文件中,并确保将该JS文件作为type="text/jsx"包含在HTML页面中,这样Transformer也会尝试进行翻译。

对于要投入生产的代码,请安装jsx编译器npm install -g react-tools,然后运行jsx <src file> <output filename>将jsx文件转换为常规的javascript

请参阅:http://facebook.github.io/react/docs/tooling-integration.html

p.s.您正在将应用程序入口点封装在DOM.ready回调或类似的回调中,对吗?