【发布时间】: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