1

Im trying to learn react js by following this tutortial in youtube. My program is just a very simple html code with some react.js. I follow every single step he made but I did not get the same result as he did. Can you please tell me what is wrong in my code and why is it not working?

Code:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Haime Computer Shop</title>
    <link rel="stylesheet" type="text/css" href="index_css.css">
    <script src="src/js/react.min.js"></script>
    <script src="src/js/react-dom.min.js"></script>
    <script src="src/js/browser.min.js"></script>
</head>
<body>

<div class="homeLinks_dcls">
<p><a href="index.html" id="home_id"> Home</a></p>
<p><a href="aboutUs.html" id="aboutUs_id"> About Us</a></p>
<p><a href="services.html" id="services_id"> Services</a></p>
<p><a href="contactUs.html" id="contactUs_id"> Contact us</a></p>
</div>

<div id="container"></div>

<script type="text/babel">
var myReactObj = React.createClass({
  render: function(){
    return (<h2>This is a component!</h2>);
  }
});

ReactDOM.render(<myReactObj/>, document.getElementById('container'));
</script>

</body>
</html>

I can only see the "Home, About Us, Services, Contact Us" text. What I can not see is the "This is a component!" text inside the myReactObject. Thanks in advance for the help...

2
  • Do you get any error in console? Commented Jul 22, 2017 at 14:13
  • 1
    Thanks for the time but I just solved it. Just trying anything and it turns out that the object name should start in CAPITALIZE. Commented Jul 22, 2017 at 14:15

1 Answer 1

1

The problem you are facing is because you are trying to deal with JSX syntax (javascript with html tags embedded) directly through your browser, but you need the Babel to transpile your code.

At this point, you have 2 options:

  • Add babel to your HTML:

JSX

<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>With Babel</title>
    <link rel="stylesheet" type="text/css" href="index_css.css">
    <script src="src/js/react.min.js"></script>
    <script src="src/js/react-dom.min.js"></script>
    <script src="src/js/browser.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.21.1/babel.min.js"></script>
</head>
<body>

<div class="homeLinks_dcls">
<p><a href="index.html" id="home_id"> Home</a></p>
<p><a href="aboutUs.html" id="aboutUs_id"> About Us</a></p>
<p><a href="services.html" id="services_id"> Services</a></p>
<p><a href="contactUs.html" id="contactUs_id"> Contact us</a></p>
</div>

<div id="container"></div>

<script type="text/babel">
var myReactObj = React.createClass({
  render: function(){
    return (<h2>This is a component!</h2>);
  }
});

ReactDOM.render(
  React.createElement(myReactObj),
  document.getElementById('container')
);

</script>

</body>
</html>
  • Change your code to use javascript only, as the sample below:

javascript

<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Without Babel</title>
    <link rel="stylesheet" type="text/css" href="index_css.css">
    <script src="src/js/react.min.js"></script>
    <script src="src/js/react-dom.min.js"></script>
    <script src="src/js/browser.min.js"></script>
</head>
<body>

<div class="homeLinks_dcls">
<p><a href="index.html" id="home_id"> Home</a></p>
<p><a href="aboutUs.html" id="aboutUs_id"> About Us</a></p>
<p><a href="services.html" id="services_id"> Services</a></p>
<p><a href="contactUs.html" id="contactUs_id"> Contact us</a></p>
</div>

<div id="container"></div>

<script type="text/javascript">
var myReactObj = React.createClass({
  render: function(){
    return React.createElement('h2', { }, 'This is a component!');
  }
});

ReactDOM.render(
  React.createElement(myReactObj),
  document.getElementById('container')
);

</script>

</body>
</html>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.