I have an app using an import statement to load scss
file. it builds fine but when loading in browser it errors
VM148 transformed.js:19714 Uncaught ReferenceError: menuIcon is not defined
at Sidebar.render (VM148 transformed.js:19714)
...
VM148 transformed.js:13839 The above error occurred in the <Sidebar> component:
in Sidebar (created by App)
in div (created by App)
in App
I am using the code from the following url https://ashiknesin.com/blog/build-custom-sidebar-component-react/
New error after appending empty string to src
VM279 transformed.js:831 Warning: Failed context type: The context `router` is marked as required in `Link`, but its value is `undefined`.
in Link (created by Sidebar)
in li (created by Sidebar)
in ul (created by Sidebar)
in nav (created by Sidebar)
in Sidebar (created by App)
in div (created by App)
in App
...
VM279 transformed.js:418 Uncaught Error: You should not use <Link> outside a <Router>
...
(anonymous) @ VM279 transformed.js:66
VM279 transformed.js:13839 The above error occurred in the <Link> component:
in Link (created by Sidebar)
in li (created by Sidebar)
in ul (created by Sidebar)
in nav (created by Sidebar)
in Sidebar (created by App)
in div (created by App)
in App
sidebar.js
import React from 'react'
import ReactDOM from 'react-dom'
import { IndexLink, Link } from 'react-router'
//import { BrowserRouter, IndexLink, Link, Route } from 'react-router-dom'
import './Sidebar.scss'
import classNames from 'classnames'
class Sidebar extends React.Component {
constructor(props) {
super(props);
this.state = {
showMenu: false
}
this.toggleMenu = this.toggleMenu.bind(this)
}
componentDidMount() {
document.addEventListener('click', this.handleClickOutside.bind(this), true);
}
componentWillUnmount() {
document.removeEventListener('click', this.handleClickOutside.bind(this), true);
}
toggleMenu() {
this.setState({ showMenu: !this.state.showMenu })
}
handleClickOutside(event) {
const domNode = ReactDOM.findDOMNode(this);
if ((!domNode || !domNode.contains(event.target))) {
this.setState({
showMenu: false
});
}
}
render() {
const showMenu = this.state.showMenu;
const sidebarClass = classNames({
'sidebar': true,
'sidebar-menu-expanded': showMenu,
'sidebar-menu-collapsed': !showMenu
});
const elementsClass = classNames({
'expanded-element': true,
'is-hidden': !showMenu,
});
return (
<nav className={sidebarClass}>
<img
className="menuIcon"
src=""
onClick={this.toggleMenu}
/>
<ul>
<li>
<Link className="expandable" to="/setting" title="Setting">
<img
src={'https://png.icons8.com/setting/ffffff'}
alt=""
/>
<span className={elementsClass}>Setting</span>
</Link>
</li>
</ul>
</nav>
)
}
}
export default Sidebar