gpt4 book ai didi

javascript - 根据名称渲染 React 组件

转载 作者:可可西里 更新时间:2023-11-01 02:33:37 26 4
gpt4 key购买 nike

上下文:我正在开发一个基于小部件的 Web 应用程序(就像已停用的 iGoogle,用户可以在其中选择他们想要显示的小部件)。每个小部件都是一个 React 组件。

简化示例:这里有 2 个不同的小部件

var HelloWidget = React.createClass({
render: function() { return <div>Hello {this.props.name}</div>; }
});

var HiWidget = React.createClass({
render: function() { return <div>Hi {this.props.name}</div>; }
});

作为用户,我选择了 HiWidget,我的名字是“dude”,所以当系统从持久层获取我的偏好设置时,它看起来像这样:

var dataFromDb = {
type: 'HiWidget',
name: 'dude'
};

当名称在字符串 var 中时,如何渲染 React 组件?

我试过这个,基于 Dynamically Rendering a React component :

React.render(
<dataFromDb.type name={dataFromDb.name} />,
document.getElementById('try2')
);

它曾经与 React 0.11 一起工作,但现在不行了。

我想避免使用巨大的 switch 语句:

switch (dataFromDb.type) {
case 'HiWidget':
var component = <HiWidget name={dataFromDb.name} />;
break;
case 'HelloWidget':
var component = <HelloWidget name={dataFromDb.name} />;
break;
}
React.render(
component,
document.getElementById('try3')
);

JSFiddle 与所有这些代码在这里:http://jsfiddle.net/61xdfjk5/

最佳答案

您可以使用一个对象来查找组件类型,并将渲染它的细节保存在一个地方:

var components = {
'HiWidget': HiWidget,
'HelloWidget': HelloWidget
}

var Component = components[dataFromObj.type]
React.render(
<Component name={dataFromObj.name}/>,
document.getElementById('try3')
)

关于javascript - 根据名称渲染 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195204/

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