包-全局配置NPM库

Package-global config NPM library

我目前正在开发一个用于 React 的库,并且不完全知道我在技术上如何才能实现我想到的功能。

基本上它是一个表单验证库,所有配置都作为挂钩的参数。看起来是这样的:

const myFormReferenceObject = useForm({
    onSubmit: (values) => {
        // do whatever you want with the values
    },
    initialState: record,
    formatMessage: translate,
    submitUnmountedFields: false
});

问题是,我认为拥有某种全局配置可能非常有用,这样您就不必为构建的每个表单重复 100 次。

我的第一个想法是像 axios 一样,在其中创建一个 axios 实例并全局配置该实例。现在,我没有实例对象,因为我只是调用了一个 function/react 钩子。

然后我想到了在 window 对象中有一个命名空间,并将配置放在那里。然后我的钩子总是可以检查 window["namespace"] 中是否有一个配置来一次配置或覆盖所有表单。

另一种可能更具反应性的方式是为配置创建上下文。但老实说我真的不想这样做,因为库本身非常简单易用。 1. 调用 hook 来创建一个表单, 2. 使用字段级验证器和道具等将表单引用传递给每个输入字段。我喜欢这种简单性,添加上下文有点破坏了简单性,因为你总是必须用上下文包围你的组件.另一方面,您可以为应用程序中的不同模块设置多个上下文,这也很酷。

你有更好的主意还是你认为我应该采用 window 方法?

如果您有全局配置,您可以在调用 useForm.

时简单地传播它
const myFormReferenceObject = useForm({
    ...myGlobalConfig,
    onSubmit: (values) => {
        // do whatever you want with the values
    },
});

此外,如果您使用 window 方法,您可以使用 window[a symbol] 而不是 window[a string] 来避免冲突。