

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Dependências de dados e considerações de tempo
<a name="data-dependencies-timing-considerations"></a>

Ao criar aplicativos complexos no App Studio, é fundamental entender e gerenciar as dependências de dados entre diferentes componentes de dados, como formulários, visualizações de detalhes e componentes baseados em automação. Os componentes de dados e as automações podem não concluir sua recuperação ou execução de dados ao mesmo tempo, o que pode levar a problemas de tempo, erros e comportamentos inesperados. Ao estar ciente dos possíveis problemas de temporização e seguir as melhores práticas, você pode criar experiências de usuário mais confiáveis e consistentes em seus aplicativos do App Studio.

Alguns possíveis problemas são os seguintes:

1. **Conflitos de tempo de renderização:** os componentes de dados podem ser renderizados em uma ordem que não está alinhada com suas dependências de dados, o que pode causar inconsistências ou erros visuais.

1. **Tempo de execução da automação:** as tarefas de automação podem ser concluídas antes que os componentes sejam totalmente carregados, levando a erros de execução do tempo de execução.

1. **Falhas de componentes:** componentes alimentados por automações podem falhar em respostas inválidas ou quando a automação não termina de ser executada.

## Exemplo: detalhes do pedido e informações do cliente
<a name="data-dependencies-timing-considerations-example"></a>

Este exemplo demonstra como dependências entre componentes de dados podem levar a problemas de tempo e possíveis erros na exibição de dados.

Considere um aplicativo com os dois componentes de dados a seguir na mesma página:
+ Um componente Detail (`orderDetails`) que busca dados do pedido.
+ Um componente detalhado (`customerDetails`) que exibe detalhes do cliente relacionados ao pedido.

Nesse aplicativo, há dois campos no componente de `orderDetails` detalhes, configurados com os seguintes valores:

```
// 2 text fields within the orderDetails detail component

// Info from orderDetails Component
{{ui.orderDetails.data[0].name}} 

// Info from customerDetails component
{{ui.customerDetails.data[0].name}} // Problematic reference
```

Neste exemplo, o `orderDetails` componente está tentando exibir o nome do cliente fazendo referência aos dados do `customerDetails` componente. Isso é problemático, pois o `orderDetails` componente pode renderizar antes que o `customerDetails` componente tenha buscado seus dados. Se a busca de dados do `customerDetails` componente for atrasada ou falhar, o `orderDetails` componente exibirá informações incompletas ou incorretas. 

## Práticas recomendadas de dependência e tempo de dados
<a name="data-dependencies-timing-considerations-example"></a>

Use as seguintes práticas recomendadas para reduzir a dependência de dados e os problemas de tempo em seu aplicativo do App Studio:

1. **Use renderização condicional:** somente renderize componentes ou exiba dados quando você confirmar que eles estão disponíveis. Use declarações condicionais para verificar a presença de dados antes de exibi-los. O trecho a seguir mostra um exemplo de declaração condicional:

   ```
   {{ui.someComponent.data ? ui.someComponent.data.fieldName : "Loading..."}}
   ```

1. **Gerencie a visibilidade de componentes secundários:** para componentes como Stepflow, Form ou Detail, que renderizam filhos antes de seus dados serem carregados, defina manualmente a visibilidade dos componentes secundários. O trecho a seguir mostra um exemplo de configuração de visibilidade com base na disponibilidade de dados do componente principal:

   ```
   {{ui.parentComponent.data ? true : false}}
   ```

1. **Use consultas de junção:** quando possível, use consultas de junção para buscar dados relacionados em uma única consulta. Isso reduz o número de buscas de dados separadas e minimiza os problemas de tempo entre os componentes de dados.

1. **Implemente o tratamento de erros em automações:** implemente um tratamento robusto de erros em suas automações para gerenciar com elegância cenários em que os dados esperados não estejam disponíveis ou respostas inválidas sejam recebidas.

1. **Use o encadeamento opcional:** ao acessar propriedades aninhadas, use o encadeamento opcional para evitar erros se uma propriedade principal for indefinida. O trecho a seguir mostra um exemplo de encadeamento opcional:

   ```
   {{ui.component.data?.[0]?.fieldSystemName}}
   ```