gpt4 book ai didi

javascript - 使用 React 动态渲染组件

转载 作者:行者123 更新时间:2023-12-03 03:23:10 28 4
gpt4 key购买 nike

我有一个在 3 个不同国家/地区运行的应用程序(类似于电子商务)。每个国家/地区都有一个开发团队,可以更改某些特定的组件以满足需求。我正在考虑通过上下文传递组件,但例如如何选择 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'/>
)
}

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

最佳答案

正如我们在评论中讨论的那样,有更聪明的方法可以做到这一点。但如果我今天需要解决这个问题,我会这样做:

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;

然后父级可以从index.js导入Input

关于javascript - 使用 React 动态渲染组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474548/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com