0

I tried to call a function inside that returns an asset url from local but directory . But it return an error missing module "."

The function is working perfectly fine outside require function.

header.jsx

class Header extends Component {
render (){
    const checkActive = (page) => {
           if ( page === this.props.activePage)
               return "active"
           else
               return null
    }

    const renderNavIcon = (page) => {
           if ( page === this.props.activePage)
               return "../../assets/images/"+page+"_red.png" ;
           else
               return "../../assets/images/"+page+"_grey.png" ;
    }
    return(
        <nav className="navbar navbar-default">
            <div className="container-fluid">
                <div className="navbar-header">
                    <button type="button" className="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
                        <span className="icon-bar"></span>
                        <span className="icon-bar"></span>
                        <span className="icon-bar"></span>
                     </button>
                    <a className="navbar-brand"><img alt="Frapp Logo" src={require("../../assets/images/onlyheartlogo.png")} />
                    </a>
                </div>
                 {console.log(renderNavIcon("pending")}
                <div className="collapse navbar-collapse" id="myNavbar">
                    <ul className="nav navbar-nav main-nav">
                      <li className={checkActive("pending")}><a href="/pending"><img src={require(renderNavIcon("pending"))} />Pending</a></li>
                      <li className={checkActive("support")}><a href="/support"><img src={require(renderNavIcon("support"))} />Support</a></li>
                      <li className={checkActive("live_edits")}><a href="/live-edits"><img src={require(renderNavIcon("live_edits"))} />Live Edits</a></li>
                      <li className={checkActive("brand_managers")}><a href="/brand-managers"><img src={require(renderNavIcon("brand_managers"))} />Brand managers</a></li>
                      <li className={checkActive("brands")}><a href="/brands"><img src={require(renderNavIcon("brands"))} />Brands</a></li>
                      <li><img alt="User" src={require("../../assets/images/armaan.png")} className="img-responsive" id="user_pic" /></li>
                      <li><a>Logout</a></li>
                    </ul>
                </div>
              </div>
          </nav>
    )
 }
}

{console.log(renderNavIcon("pending")} returns "../../assets/images/pending_red.png"

which is a valid url.

Please help ! Thanks !

3
  • Why are you using require? Can't you just pass the icon path? It would prevent that kind of problem. Commented Jul 27, 2017 at 8:00
  • I believe your problem is the require(), what about using only <img src={renderNavIcon("pending")} /> ? Commented Jul 27, 2017 at 8:00
  • When i remove require my image source is : http://localhost:3000/assets/images/support_grey.png Commented Jul 27, 2017 at 8:20

1 Answer 1

2

Use require inside renderNavIcon function

const renderNavIcon = (page) => {
    if ( page === this.props.activePage)
        return require("../../assets/images/"+page+"_red.png") ;
    else
        return require("../../assets/images/"+page+"_grey.png") ;
}

just remove require from src

<li className={checkActive("pending")}><a href="/pending"><img src={renderNavIcon("pending")} />Pending</a></li>
<li className={checkActive("support")}><a href="/support"><img src={renderNavIcon("support")} />Support</a></li>
<li className={checkActive("live_edits")}><a href="/live-edits"><img src={renderNavIcon("live_edits")} />Live Edits</a></li>
<li className={checkActive("brand_managers")}><a href="/brand-managers"><img src={renderNavIcon("brand_managers")} />Brand managers</a></li>
<li className={checkActive("brands")}><a href="/brands"><img src={renderNavIcon("brands")} />Brands</a></li>
Sign up to request clarification or add additional context in comments.

3 Comments

When i remove require my image source is : http://localhost:3000/assets/images/support_grey.png
add require inside renderNavIcon function
Sorry , didn't see your answer properly. Thanks !

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.