使用React动态渲染组件

时间:2017-09-28 16:56:21

标签: javascript reactjs react-redux

我的应用程序运行在3个不同的国家/地区(接近电子商务)。每个国家/地区都有一个开发团队,可以更改某些特定component以满足需求。我正在考虑通过上下文传递组件,但是如何选择Form-USForm-UK? (认为​​动态导入它在React中是不可能的)

我的App.js

import React from 'react'
import UserInput from './common/UserInput'

class App extends React.Component {

  getChildContext () {
    return {
      input: UserInput
    }
  }

  render () {
    return (
      <div>
        {this.props.children}
      </div>
    )
  }
}

App.childContextTypes = {
  input: React.PropTypes.object
}

export default App

我会在需要时选择该组件:

render () {
    const Input = this.context.input
    return (
        <Input placeholder='Input Test'/>
    )
}

那工作得很好,但这是一个很好的做法?它有更好的方法,如何添加具有特定名称的组件到该结构?

1 个答案:

答案 0 :(得分:1)

正如我们在评论中所讨论的,有更聪明的方法可以做到这一点。但如果我今天需要一个解决方案,那就是我要做的事情:

输入&#39;

index.js

<a href="file:///\\server\shared_data\Test\Test_Report.pdf">Test Report</a>

然后父母可以从index.js导入import ComponentUS from './Component-US'; import ComponentBR from './Component-BR'; import ComponentAG from './Component-AG'; import config from '../config.json'; let thingToExport; if (config.country === 'US') { thingToExport = ComponentUS; } else if (config.country === 'BR') { thingToExport = ComponentBR; } else { thingToExport = ComponentAG; } export default thingToExport;