如何根据prop的值使用React.js,ES6和Webpack导入文件?

时间:2017-02-21 11:38:15

标签: javascript reactjs webpack ecmascript-6

我们说我有一个名为CountryFlag的React.js组件。我还在countries/

的每个国家/地区的旗帜上都有一个SVG图像目录

这个组件需要一个道具 - countryCode。对于西班牙来说,这将是ES

import不在范围内时,如何将this.props.countryCode构建与this.props一起使用?

我尝试在componentDidMount()中执行此操作,但出现语法错误:

Syntax error: 'import' and 'export' may only appear at the top level (6:2)

3 个答案:

答案 0 :(得分:2)

您应该使用require。像:

class Whatever extends Component{
  constructor(props) {
    super(props);
    this.countryImage = null;
  }
  componentDidMount() {
    const { countryCode } = this.props;
    this.countryImage = require(`./countries/${countryCode}.svg`); 
  }
  render() {
    return (
      <img src={this.countryImage} alt="Whatever" />
    );
  }
}

答案 1 :(得分:1)

您可以在System.import

中动态使用importcomponentDidMount组件
constructor(props) {
  super(props)

  this.state = { component: null }
}
componentDidMount() {
    this.loadComponent(component => this.setState({ component }));
}
loadComponent = callback => {
    let component = null;
    // This needs to be relative to the current module otherwise Webpack won't know where to look
    System.import(`./countries/${this.props.countryCode}`).then(module => callback(component = module))
    return component;
}

答案 2 :(得分:1)

您还可以将src上的道具用于图像。 就像是 <img src={"./img/" + this.props.country + ".svg"}>