Capacidades comuns
O objeto de contexto fornece as capacidades integradas do NocoBase. Algumas só estão disponíveis no Plugin, outras só em componentes, e algumas existem nos dois lados, mas com formas de uso diferentes. Veja primeiro a visão geral:
A seguir, cada capacidade é apresentada por namespace.
Requisição API (ctx.api)
Use ctx.api.request() para chamar APIs do backend, com uso idêntico ao do Axios.
Uso no Plugin
Uso em componentes
Combinação com useRequest do ahooks
Em componentes, você pode usar o useRequest do ahooks para simplificar o gerenciamento de estado das requisições:
Interceptadores de requisição
Por meio de ctx.api.axios, é possível adicionar interceptadores de requisição/resposta, normalmente configurados no load() do Plugin:
Cabeçalhos personalizados do NocoBase
O NocoBase Server suporta os cabeçalhos personalizados a seguir, normalmente injetados automaticamente pelos interceptadores, sem necessidade de configuração manual:
Internacionalização (ctx.t / ctx.i18n)
Os plugins do NocoBase gerenciam arquivos multilíngues através do diretório src/locale/, e usam ctx.t() para acessar traduções no código.
Arquivos multilíngues
Em src/locale/ do plugin, crie arquivos JSON por idioma:
Adicionar um novo arquivo de idioma pela primeira vez requer reiniciar a aplicação para ter efeito.
ctx.t()
Em componentes, use ctx.t() para obter o texto traduzido:
this.t()
No Plugin, é mais conveniente usar this.t() — ele injeta automaticamente o nome do pacote do plugin como namespace, sem precisar passar ns manualmente:
ctx.i18n
ctx.i18n é a instância subjacente do i18next. Em geral, basta usar ctx.t(). No entanto, se precisar trocar o idioma dinamicamente, monitorar mudanças de idioma etc., use ctx.i18n:
tExpr()
tExpr() gera uma string de expressão de tradução adiada, normalmente usada em FlowModel.define() — porque define é executado no momento de carregamento do módulo, quando ainda não existe a instância do i18n:
Para uso completo de internacionalização (escrita de arquivos de tradução, hook useT, tExpr etc.), veja i18n internacionalização. A lista completa de códigos de idioma suportados pelo NocoBase está em Lista de idiomas.
Logs (ctx.logger)
Use ctx.logger para emitir logs estruturados, baseado em pino.
Uso no Plugin
Uso em componentes
Níveis de log do mais alto para o mais baixo: fatal > error > warn > info > debug > trace. Apenas logs com nível maior ou igual ao configurado serão emitidos.
Rotas (ctx.router / ctx.route / ctx.location)
As capacidades relacionadas a rotas se dividem em três partes: registro (apenas Plugin), navegação e obtenção de informações (apenas em componentes).
Registro de rotas (this.router / this.pluginSettingsManager)
No load() do Plugin, registre rotas de página com this.router.add() e a página de configurações do plugin com this.pluginSettingsManager:
Para uso detalhado, veja Router de rotas. Um exemplo completo de página de configurações está em Construir uma página de configurações de plugin.
this.router é o RouterManager, usado para registrar rotas. this.pluginSettingsManager é o PluginSettingsManager, usado para registrar páginas de configurações. Ambos não são a mesma coisa que o ctx.router em componentes (React Router, usado para navegar entre páginas).
Navegação de páginas (ctx.router)
Em componentes, use ctx.router.navigate() para navegar entre páginas:
Informações de rota (ctx.route)
Em componentes, use ctx.route para obter informações da rota atual:
Tipo completo de ctx.route:
URL atual (ctx.location)
ctx.location fornece informações detalhadas sobre a URL atual, semelhante a window.location do navegador:
ctx.route e ctx.location também podem ser acessados via this.context no Plugin, mas no momento do carregamento do plugin a URL é indeterminada e os valores obtidos não fazem sentido. Recomenda-se utilizá-los em componentes.
Gerenciamento de visualizações (ctx.viewer / ctx.view)
ctx.viewer oferece a capacidade de abrir modais, drawers e outras visualizações de forma imperativa. Funciona tanto no Plugin quanto em componentes.
Uso no Plugin
Uso em componentes
Método genérico
Operações dentro da visualização (ctx.view)
Em componentes dentro de modais/drawers, você pode usar ctx.view para operar a visualização atual (por exemplo, fechá-la):
FlowEngine (this.flowEngine)
this.flowEngine é a instância do FlowEngine, disponível apenas no Plugin. Geralmente, é usado para registrar FlowModels:
O FlowModel é o núcleo do sistema de configuração visual do NocoBase — se o seu componente precisa aparecer no menu "Adicionar bloco / campo / ação", você precisa envolvê-lo com FlowModel. Para uso detalhado, veja FlowEngine.
Mais capacidades
As capacidades a seguir podem ser usadas em cenários mais avançados; aqui estão listadas brevemente:
Para uso detalhado dessas capacidades, consulte a documentação completa do FlowEngine.
Links relacionados
- Visão geral do contexto — semelhanças e diferenças entre os dois pontos de acesso ao contexto
- Plugin — atalhos do Plugin
- Desenvolvimento de Component — uso de useFlowContext em componentes
- Router de rotas — registro de rotas e navegação
- Documentação completa do FlowEngine — referência completa do FlowEngine
- i18n internacionalização — escrita de arquivos de tradução, tExpr, useT
- Lista de idiomas — códigos de idioma suportados pelo NocoBase
- Construir uma página de configurações de plugin — exemplo completo de uso de ctx.api
- Visão geral do FlowEngine — uso básico de FlowModel

