我的React命名方式
你可能已经听说过很多次,在编程中最难的事情之一就是命名。
很多时候,我们会花费很多的时间来思考如何给组件的props和states变量命名。
在这篇材料中,我将与您分享我在使用React时的命名规范,帮助您轻松决定如何命名props和states。
Props命名规范
我将props分为两类: Input和Output。他们分别有不同的命名方式。
Input props是从父组件传递到子组件,用于定义子组件的行为。

Output props与Input props相似,但它们的主要目的是允许子组件与父组件进行通信,我们称之为事件处理器。

既然我们已经了解了Output props与Input props之间的区别,接下来让我们讨论命名规范。
Input Props的命名
对于Input Props,我使用以下命名规范:
-
如果props是布尔值,我使用前缀“is”或“has”,后跟props名称。例如:
isDisabled,hasError,isActive,isOpen。 -
如果props是组件的“域值”或“域数据”,我将其命名为value。无论是字符串、数字、数组还是任何对象——它们都称为value,类似于原生HTML元素属性。例如:
value,defaultValue,initialValue。 -
如果props是组件内部子组件的样式,我使用后缀Props,加上子组件名称。例如:
textProps,buttonProps,inputProps,switchProps。 -
如果props是引用(ref)props,我使用后缀Ref,加上引用的名称。例如:
inputRef,buttonRef,textRef。
Output Props的命名
对于Output Props,我使用以下命名规范:
-
如果props是渲染props,我使用前缀
render,后面跟props的名称。例如:renderItem、renderHeader、renderFooter。 -
如果props是事件处理器,我使用前缀
on,后面跟事件的名称。例如:onClick、onSubmit、onClose、onOpen。
由于一些Output Props是事件处理器,在这种情况下,我使用前缀 handleOn,后面跟事件的名称。例如:handleOnClick、handleOnSubmit、handleOnClose、handleOnOpen。
如果事件是变更事件,我还会添加后缀 Change。例如:handleOnChange、handleOnInputChange。

State命名规则
State在命名规范上几乎与原生JavaScript变量相同。
如果你熟悉并且已经有了变量的命名规范,你可以对状态变量使用相同的命名规范。
但如果你没有变量的命名规范,可以使用以下命名规范:
-
如果State是布尔值,我使用前缀
is或has,后面跟状态的名称。例如:[isDisabled, setIsDisabled]、[hasError, setHasError]、[isActive, setIsActive]、[isOpen, setIsOpen]。 -
如果State是组件的“域值”/“域数据”,我将其命名为
value。无论它是字符串、数字、数组还是任何对象——它们都是相同的值,类似于原生HTML输入元素。例如:[value, setValue]、[defaultValue, setDefaultValue]、[initialValue, setInitialValue]。
如果这些命名规范中的任何一个与Props冲突,你可以在解构Props时对它们进行别名处理。

- 如果State是一个缓存的值,我使用前缀
memoized或Memoized,后面跟State或组件的名称。
如果缓存的值不是组件,前缀用小写。例如:memoizedValue、memoizedSum、memoizedResult。
如果缓存的值是组件,前缀用大写。例如:MemoizedButton、MemoizedText、MemoizedHeader。

结论
命名是件困难的事情,但有了一个指南来帮助你做决定,会变得更容易。
这些是我在使用React时采用的命名规范,如果你注意到了,它们受到HTML元素属性的启发。我喜欢重用其中的一些命名规范,因为这样我不必重新发明命名,只需寻找相似之处。
如果这些对你不起作用,只要记住,你总是可以创建最适合你、你的使用场景和团队的命名规范。
最终,重要的是你有一个可以始终遵循的命名规范。
转载自:https://juejin.cn/post/7374287624544419866