Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 何时在React中创建组件?_Reactjs_Components - Fatal编程技术网

Reactjs 何时在React中创建组件?

Reactjs 何时在React中创建组件?,reactjs,components,Reactjs,Components,对于何时使用React将重复代码转换为组件,是否有最佳实践?很明显,如果它是更复杂的重复代码,但以我正在处理的时间线为例: 示例A: <label className="col col-2020">2020</label> <label className="col col-2015">2015</label> <label className="col col-2010">2

对于何时使用React将重复代码转换为组件,是否有最佳实践?很明显,如果它是更复杂的重复代码,但以我正在处理的时间线为例:

示例A:

<label className="col col-2020">2020</label>
<label className="col col-2015">2015</label>
<label className="col col-2010">2010</label>
<label className="col col-2005">2005</label>
<label className="col col-2000">2000</label>
2020
2015
2010
2005
2000
超级简单,但事情总是会变得更复杂。我也可以循环它:

示例B

{      
[2020,2015,2010,2005,2000].map(year => (<label className={`col col-${year}`}>{year}</label>))
}

{
[20202015201020052000]。地图(年份=>({year}))
}
或者我可以循环一个我要制作的组件:

示例C

{      
[2020,2015,2010,2005,2000].map(year => <TimeLineLabel year={year}/>)
}
{
[20202015201020052000]。地图(年份=>)
}

考虑到简单性,有没有一种更为“反应式”的方法呢?

一般来说,编程中有一种常见的最佳实践叫做
DRY
(不要重复)

我曾经在一篇文章中读到(现在找不到,我现在对它做了一些修改)如下:

如果您发现自己正在复制和粘贴文件中的代码块 或者您碰巧需要在另一个文件中使用相同的块,这是一个好方法 从这段代码创建一个可重用组件并开始 使用它

因此,由于这个原因,选项“A”被排除在外,如果您想要添加某种样式规则或更改标签的类名,那么如果您决定对其进行缩放,则会使这段代码无法维护

现在,选项“B”和“C”是正确的,但这取决于您试图实现的场景

如果
TimeLineLabel
包含大量代码行,它将在多个组件中重复使用,或者它将被自定义,那么最好为它创建一个新的组件文件,并将其导入任何您想要的位置


否则,选项“B”是赢家,如果它是一个像您所展示的一样的行程序,并且您只在该文件中使用它,那么就不需要选项“C”。

前两种方法甚至都不是
React
本身。只要尽可能用最少的代码完成工作,你不必向别人解释,因为这很难理解。根据我的经验,我认为你应该在以下情况下创建新组件:1。创建新的视图(页面)-句柄UI-句柄逻辑我们需要每个视图至少分离2个组件2。一些常见的事情,当您觉得需要复制代码时重复多次您应该创建新的组件来处理它