Schema 渲染的上下文。
scope:Schema 中变量的映射components: Schema 中组件的映射refresh:触发 React 重新渲染的工具函数reset:重置整个 Schema 节点designable:是否显示设计器,默认 falsesetDesignable:用于切换 designable 的值用于获取注册的 scope 和 components。
其是对 SchemaComponentContext.Provider 和 FormProvider 的封装,并内置在 Application 中,并且会将 app.components 和 app.scopes 传递过去,所以一般情况下 不需要关注 此组件。
designable:SchemaComponentContext 中 designable 的默认值form:Tachybase 的 Schema 能力是基于 formily 的 FormProvider 提供的,form 是其参数,默认为 createForm()scope:Schema 中所用到的变量,会通过 SchemaComponentContext 进行传递components:Schema 中所用到的组件,会通过 SchemaComponentContext 进行传递用于渲染 Schema,此组件必须和 SchemaComponentProvider 一起使用,因为 SchemaComponentProvider 提供了 FormProvider 作为渲染 Schema 的根节点。
详细解释
memoized:当为 true 时,会对每层的 Schema 使用 useMemo() 进行处理components:同 SchemaComponentProvider 的 componentsscope: 同 SchemaComponentProvider 的 components结合 SchemaComponentProvider、 useSchemaComponentContext() 和 SchemaComponent。
使用 new Application() 的方式,其内置了 SchemaComponentProvider ,我们可以如下操作:
在应用中,会有很多层级的嵌套,每一层都可能提供自己的组件和 scope,此组件就是为了层层传递 Schema 所需的 components 和 scope 的。