Reactjs 使用多元素条件句进行反应
我正在将现有应用程序转换为ReactJS。我发现有些事情很难在工作中做好。下面是我想做的Reactjs 使用多元素条件句进行反应,reactjs,Reactjs,我正在将现有应用程序转换为ReactJS。我发现有些事情很难在工作中做好。下面是我想做的 render () { return (<div id="container"> <div className="shared">shared content here</div> <div className="shared">shared content here</div> <d
render () {
return (<div id="container">
<div className="shared">shared content here</div>
<div className="shared">shared content here</div>
<div className="shared">shared content here</div>
{featureAEnabled ?
(<div className="featureA">featureA enabled content</div>
<div className="featureA">featureA enabled content</div>) :
(<div className="old">featureA disabled content</div>
<div className="old">featureA disabled content</div>)
</div>);
}
render(){
返回(
此处共享内容
此处共享内容
此处共享内容
{功能已启用?
(b)已启用的内容
(已启用的内容):
(b)禁用的内容
(已禁用的内容)
);
}
问题是您不能在React中返回多个元素,必须始终返回单个元素
我目前的解决方案包括
render(){
返回(
此处共享内容
此处共享内容
此处共享内容
{featureAEnabled&&featureAEnabled内容}
{featureAEnabled&&featureAEnabled内容}
{!featureAEnabled&&featureAEnabled内容}
{!featureAEnabled&&featureAEnabled内容}
);
}
有没有一种方法可以允许基于条件的代码块呈现多个元素,就像我的第一个代码片段一样?一种方法是在呈现中切换一个类
let featureEnabledClasses = 'hidden';
if (myCondition === true) {
featureEnabledClasses = '';
}
那你就可以上菜了
<div className={featureEnabledClasses}>featureA enabled content</div>
featureA启用的内容
理想情况下,您应该尝试在单独的组件中分离“FeatureEnabled”和“featureADisabled”元素,然后呈现它们
另一种方法是将“featureAEnabled”和“featureADisabled”元素放入数组中并返回。如下所示:
render() {
let renderFeatureA = [
<div >featureA enabled content</div>,
<div >featureA enabled content</div>
];
let disableFeatureA = [
<div >featureA disabled content</div>,
<div >featureA disabled content</div>
];
let renderItems = featureAEnabled ? renderFeatureA : disableFeatureA;
return (
<div id="container">
<div >shared content here</div>
<div >shared content here</div>
<div >shared content here</div>
{renderItems}
</div>
)
};
render(){
让renderFeatureA=[
已启用的内容,
启用尿素的内容
];
设禁用Featurea=[
包括禁用的内容,
尿素禁用内容
];
让renderItems=FeatureEnabled?RenderFeatureUrea:DisableFeatureUrea;
返回(
此处共享内容
此处共享内容
此处共享内容
{renderItems}
)
};
你可以将那些featureA和featureB div放在一个div na下?这是解决方案#1。这是完全可行的,除非我有很多代码要转换成ReactJS,这会大大降低转换速度。你需要添加键。键用于什么?当你将元素放入数组时,你需要添加键=
@Sulthan Agreed.K当ReactJs需要更新dom时,eys很有帮助。但是在给定的场景中,我假设这些元素都是呈现的,没有任何条件涉及到哪些元素被呈现。然而,我只是指出了给定问题的可能解决方案。其他实现细节需要由编码人员处理。但是是的,键可以作为良好的实践添加。我不知道您可以将元素数组与其他元素一起使用,我认为它们是它们父母的唯一子女。这对我很有用。谢谢我的示例过于简单,但我想做的远不止更改类
render() {
let renderFeatureA = [
<div >featureA enabled content</div>,
<div >featureA enabled content</div>
];
let disableFeatureA = [
<div >featureA disabled content</div>,
<div >featureA disabled content</div>
];
let renderItems = featureAEnabled ? renderFeatureA : disableFeatureA;
return (
<div id="container">
<div >shared content here</div>
<div >shared content here</div>
<div >shared content here</div>
{renderItems}
</div>
)
};