【问题标题】:Package-global config NPM library包全局配置 NPM 库
【发布时间】:2021-11-11 16:43:14
【问题描述】:

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

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

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

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

我的第一个想法是像 axios 那样做,创建一个 axios 实例并全局配置该实例。现在,我没有实例对象,因为我只是调用了一个函数/反应钩子。

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

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

您有更好的主意还是您认为我应该采用窗口方法?

【问题讨论】:

    标签: javascript reactjs typescript npm configuration


    【解决方案1】:

    如果您有全局配置,您可以在调用useForm 时将其散布。

    const myFormReferenceObject = useForm({
        ...myGlobalConfig,
        onSubmit: (values) => {
            // do whatever you want with the values
        },
    });
    

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

    【讨论】:

    • 哦,哇,我没想到。不妨创建一个导出配置并使用扩展运算符的模块。天才,谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-03-10
    • 2022-01-25
    • 2021-05-19
    • 1970-01-01
    • 2021-04-07
    • 2018-12-30
    • 2017-11-05
    • 2020-10-23
    相关资源
    最近更新 更多