I am learning reactJs and trying to pass a property to a component.
Code is as follow -
import React from 'react';
import ReactDOM from 'react-dom';
class myComponent extends React.Component {
    render() {
        if (this.props.signedIn == false) {
            return <h1>Hi</h1>;
        }
        return <h1>Hello!</h1>;
    }
}
ReactDOM.render(
    <myComponent signedIn={false} />,
    document.getElementById('app')
);
This works, but notice the part where I have to inject false as javascript wrapped in curly braces.
My doubt is that does JSX not recognize 'false' string as falsy value as in normal JS?
Reason for asking- Comparison with ng-show="false" in angular, which hides the element, But as discussed in comment that might be because ng-show directive manually evaluate 'false' as falsy value.
Don't forget to fix the component name, it should start with uppercase letters.
JSX, as mentioned in other comments and answers. This is just how JavaScript works.  
Please Note, important thing to remember:
Never ever do a double equals (==) a.k.a "Abstract Equality" against a Boolean, This is asking for bugs. 
Because the engine will do a type coercion only on the Boolean value and this can lead to unexpected behavior.
For example,
if(2 == true) //returns false
and
if(2 == false) // returns false
from the spec:
If Type(x) is Boolean, return the result of the comparison ! ToNumber(x) == y.
If Type(y) is Boolean, return the result of the comparison x == ! ToNumber(y).
Instead, you could do an implicit check:
if (this.props.signedIn)  
Or explicit check but use the triple equals a.k.a "strict equality"
if (this.props.signedIn === false)
react part: Again, it's basically just JavaScript functions and objects after all.prop then it will be undefined:  
this.props.signedIn // signedIn will be undefined if we didn't pass it as a prop
So, an implicit check like mentioned above:
if (this.props.signedIn) 
Will work just fine.
class MyComponent extends React.Component {
  render() {
    if (this.props.signedIn) {
      return <h1>Hi</h1>;
    }
    return <h1>not signed on!</h1>;
  }
}
ReactDOM.render(
  <MyComponent />,
  document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
Running example with a false passed in:
class MyComponent extends React.Component {
  render() {
    if (this.props.signedIn) {
      return <h1>Hi</h1>;
    }
    return <h1>not signed on!</h1>;
  }
}
ReactDOM.render(
  <MyComponent signedIn={false}/>,
  document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
Running example with a true passed in:
class MyComponent extends React.Component {
  render() {
    if (this.props.signedIn) {
      return <h1>Hi</h1>;
    }
    return <h1>not signed on!</h1>;
  }
}
ReactDOM.render(
  <MyComponent signedIn={true}/>,
  document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With