Unable To Display Svg's From Local Folder Using React Js
what i need : I am trying to display svg from external folder and that folder contains some 50 files and  public folder   |-images         -| 50 svgs  in app.js  i am trying to dis
Solution 1:
React does not give access to content outside of src directory to be used in React code.
Possible solutions may be:
- Move your svg inside src directory (Recommended). 
- Use Public folder and access it like this. (Using Public Folder) 
.
// Using Public Folder
import React from 'react';
import './App.css';
class App extends React.Component{
  render(){
    const svgs = ["0.svg", "23.svg",...];
    return(
       <div>
         {svgs.map(svg => 
            <img src={`${process.env.PUBLIC_URL}/svgfolder/${svg}`} alt="test"></img>
         }
       </div>
     )
   }
}
export default App;
Solution 2:
I too have the same scenario where i tried this approach and it worked u can try
import React from 'react';
import './App.css';
var images = [];
class App extends React.Component {
     importAll(r) {
      return r.keys().map(r);
    }
  componentWillMount() {
    images = this.importAll(require.context('../public/public/svgfolder/', false, /\.(png|jpe?g|svg)$/));
  }
  render(){
    return(
      <div>
        <div>
         {images.map((image, index) => <div> <p>{index + 1}</p> <img  key={index} src={image} alt="info"></img> </div>  )}
       </div>
      </div>
    )
  }
}
export default App;
Solution 3:
Instead of loading SVGs how you are currently doing it, I would recommend inline SVG as React Components. This way you can control the styling with props and state too as well as many other useful capabilities.
Example:
import React from 'react';
import ReactDOM from 'react-dom'
const GithubSVG = (props) => {
  const { backFill, className, mainFill } = props.props;
  return(
    <svg
      className={className}
      height='512'
      id='Layer_1'
      version='1.1'
      viewBox='0 0 512 512'
      width='512'
    >
      <defs id='defs'/>
      <g id='g'>
        <rect
          height='512'
          id='rect'
          style={{
            fill: backFill,
            fillOpacity: 1,
            fillRule: 'nonzero',
            stroke: 'none'
          }}
          width='512'
          x='0'
          y='0'
        />
        <path
          d='a bunch of random numbers'
          id='svg'
          style={{fill: mainFill}}
        />
      </g>
    </svg>
  )
}
export default GithubSVG;
You can now import that component anywhere.
Solution 4:
If you are using Webpack, it is better to use svg-url-loader for webpack & package them with your deployments.
Add below in your webpack.config
 module: {
    rules: [
      {
        test: /\.svg/,
        use: { loader: 'svg-url-loader', options: {} },
      }
   ]
}
app.css
.zero {
  background: url('../public/svgfolder/0.svg') no-repeat;
}
app.js
<i className="zero" />
Post a Comment for "Unable To Display Svg's From Local Folder Using React Js"