【问题标题】:Issue with react component loading反应组件加载问题
【发布时间】:2016-07-31 21:13:50
【问题描述】:

我决定在这个周末学习 react 并且 JSFiddle 中的事情进展顺利,但是我决定添加第 4 个组件(var gooBye ...),现在视图是空的。关于可能导致这种情况的任何想法?没有错误弹出 JSFiddle React components

var Hello = React.createClass({
    render: function() {
        return <div>Hello {this.props.name}</div>;
    }
});

var testButton = React.createClass({
	render: function() {
  		return <button name="button">Click</button>; 
  }
});
 
 var goodBye = React.createClass({
	render: function() {
  		return <div>GoodBye</div>;
  }
});


React.render(
	<Hello name="People" />, 
	document.getElementById('myClass');
);
    
ReactDOM.render(
 	testButton(),
  document.getElementById('test2');
);
    
React.render(
   <goodBye />,
   document.getElementById('test3');
);   
    
<div id="myClass">
   </div>
 <div id="test1">
 </div>
 <div id="test2">
  </div>
  <div id="test3">  
  </div>
 <script type="text/jsx">
 			ReactDOM.render(
    	<h1>Test component in html body</h1>,
      document.getElementById('test');
    );
 </script>


</body>

【问题讨论】:

  • 请原谅我试图排除故障的“ReactDOM”
  • 你应该只使用 ReactDOM,react.render 已被弃用

标签: javascript reactjs components


【解决方案1】:

组件名称应以大写字母开头,例如GoodBye.

当 JSX 中的元素名称以小写字母开头时,React 假定它是原生 HTML(或 SVG...)元素,例如 &lt;div&gt;&lt;input&gt;。当它以大写字母开头时,它假定它是一个 React 组件,例如&lt;Hello&gt;&lt;GoodBye&gt;

var GoodBye = React.createClass({
    render: function() {
        return <div>GoodBye</div>;
    }
});

ReactDOM.render(
    <GoodBye />,
    document.getElementById('test3')
);

【讨论】:

  • 感谢您的提示,但我已经调整了组件名称,但仍然没有骰子。
【解决方案2】:

你有多个语法错误,我第二次打开你的 jsfiddle 控制台就可以看到它们:

您需要使用ReactDOM.renderreact.render 已弃用 括号中不能有最后一个分号:(&lt;example&gt;, asdfasdf;) 应该是 (&lt;example&gt;, asdfasdf)

ReactDOM.render(
    <TestButton />,
  document.getElementById('test2') // no semi-colon here!
);

您需要在组件前面有大写字母。

var TestButton = React.createClass({
    render: function() {
        return <button name="button">Click</button>; 
  }
});

这里是你的一个例子(上面的代码)的一个工作小提琴......你很接近,只是对语法非常小心。

Fiddle React

【讨论】:

  • 感谢您对 ReactDOM 的澄清。我已经大写了组件并删除了分号,但我仍然无法恢复组件jsfiddle.net/kgee/r4p96jdg/6
  • 每个页面可以有一个 ReactDOM.render,你需要把所有的组件放在一个 React 元素中,我们称之为容器...
猜你喜欢
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 2021-07-27
  • 2019-10-10
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
相关资源
最近更新 更多