A reutilização de código é um dos pilares mais fortes do desenvolvimento de aplicativos modernos; sem a capacidade de reutilizar o código em vários locais, mantendo sua integridade, seria impraticável desenvolver aplicativos em larga escala. Fix Titanfall 2 Error 429 Connection to Server Herança é um conceito de programação de software que permite a reutilização massiva de código.
Neste artigo, exploraremos a herança e aprenderemos como implementá-la no React Native. Quanto tempo leva para baixar e instalar o Windows 10? Quanto tempo leva para baixar o Windows 10 Mais adiante neste artigo, discutiremos alguns outros métodos populares de reutilização de código e veremos como eles funcionam contra a herança. vamos começar!
O que é herança?
O que é React Native?
Implementando herança em React Native
Comparando Herança vs. Outras Abordagens de Reuso de Código Adereços Trabalhos que Contêm Especialização
O que é herança?
A herança é um dos conceitos básicos da programação orientada a objetos. Como corrigir BetterDiscord não está funcionando? Ele permite que uma classe seja derivada de outra classe e herde suas propriedades e métodos. Como desativar o SpeedStep no Windows 10? O acesso às propriedades e métodos da classe base pode ser controlado por meio de modificadores de acesso, e novas propriedades e métodos podem ser facilmente adicionados para implementar a lógica de negócios personalizada.
Para entendê-lo melhor, como corrigir o código de erro Dev 6164 do Call of Duty Vamos ver um exemplo. Suponha que você tenha a seguinte classe JavaScript:
carro de classe {
construtor() {
this.rodas = 4
this.color = "VERMELHO"
}
acelerar () {
// Lógica para acelerar aqui
console.log("aceleração chamada")
}
parar () {
// Lógica para parar o veículo
console.log("parada chamada")
}
buzinar () {
// Lógica para buzinar
console.log("buzina!")
}
printInfo() {
console.log("Rodas: " + esta.rodas + " Cor: " + esta.cor)
}
}
Digamos que você queira fazer um ônibus. Agora, você sabe que pode ter a mesma aceleração, como corrigir o código de erro Destiny2 CURRANT? O código de erro CURRANT causa a função de parar e buzinar. No entanto, terá um número diferente de rodas, digamos 8, e possivelmente uma cor diferente. Ele também pode executar outras funções, como baixar o aplicativo VisualStudio? Baixe e instale tutoriais do Visual Studio, como abrir a porta do passageiro.
O código a seguir mostra como isso pode ser facilmente alcançado herdando todas as propriedades e métodos do carro:
classe Ônibus estende Carro {
construtor() {
super()
this.rodas = 8
this.color = "AZUL"
}
openPassengerDoors() {
// Lógica para abrir as portas dos passageiros aqui
console.log("openPassengerDoors chamado")
}
}
A palavra-chave extends permite que a classe Bus estenda a funcionalidade da classe Como corrigir o erro de conexão do código 4 do Spotify no Windows 10? Car e adicione sua própria funcionalidade. Você mesmo pode verificar:
// Cria novas instâncias de ambas as classes
const carro = novo Carro()
ônibus const = novo Ônibus()
// Imprime os valores de suas propriedades
car.printInfo()
// Saída: Rodas: 4 Cor: VERMELHO
bus.printInfo()
// Saída: Rodas: 8 Cor: AZUL
// Chama o método de aceleração
car.accelerate()
// Saída: aceleração chamada
bus.accelerate()
// Saída: aceleração chamada
// Chama o método recém criado
bus.openPassengerDoors()
// Output: openPassengerDoors chamado
Usando essa abordagem, a herança permite que você reutilize facilmente a lógica existente sem precisar reescrevê-la. Alguns outros benefícios do uso de herança incluem:
Escreva e atualize o código base de forma flexível em um só lugar
economiza tempo e esforço gastos reescrevendo o mesmo código novamente
Fornece uma estrutura clara para os relacionamentos entre as classes
Permitir que modificadores de acesso controlem como as subclasses usam dados herdados
O que é React Native?
O React Native é uma das estruturas de desenvolvimento de aplicativos híbridos mais populares em 2022. Como corrigir o código de erro do Windows Update 0x800b0108? Como corrigir tela rosa no laptop com base em javascript ? Como ajustar o laptop rosa React Native pode ajudá-lo a criar rapidamente aplicativos para Android e iOS usando a mesma base de código.
Inspirado pelo React, como corrigir o código de erro 9999 do Audacity? O React é outra estrutura JavaScript popular para o desenvolvimento de aplicativos da Web, o React Native foi criado pelo Facebook em 2015, Como corrigir o aplicativo da Microsoft Store fez muitos erros de solicitações? Tem sido de código aberto desde então. Como corrigir o problema do menu Iniciar do Windows 11 que não está funcionando? O que fazer se o menu Iniciar do Windows 11 não responder O React Native usa o conceito de componentes para construir e combinar telas de IU complexas.
Como corrigir o código de erro de Destiny 2 ANTEATER2, já que cada aplicativo pode conter até centenas de componentes ? Portanto, é importante mantê-los organizados e ter relacionamentos significativos.Quais são alguns firewalls gratuitos para Windows? Isso ajuda a reduzir a carga de trabalho de manutenção e facilita o envio de atualizações no futuro .
É aqui que entra a herança. Agora, como corrigir o erro de falta do contêiner de telemetria da NVIDIA? Causas do código de erro NVIDIA 0x0003 Vamos aprender como implementar a herança no React Native.
Implementando herança em React Native
Semelhante ao exemplo de JavaScript acima, como corrijo o problema do servidor não encontrado no ApexLegends? O que devo fazer se o servidor não for encontrado após a atualização do apex? Você pode usar a palavra-chave extends no React Native para implementar a herança. Para entender melhor, vamos começar com um exemplo. Abaixo está um display com o texto selecionado, e o computador mostra que o recurso solicitado está em uso. O que fazer? Os componentes das caixas de texto que exibem os recursos solicitados usam a cor do texto e a cor do plano de fundo:
importar * como Reagir de 'reagir';
importar { Text, View, StyleSheet } de 'react-native';
classe padrão de exportação TextPrompt extends React.Component {
constructor(acessórios) {
super()
// Armazena o texto das props no estado
este.texto = props.texto
// Cria e armazena o objeto de estilos no estado
this.styles = StyleSheet.create({
recipiente: {
alignItems: 'center',
justificarConteúdo: 'centro',
preenchimento: 12,
borderRadius: 4,
cor de fundo: "branco"
},
parágrafo: {
margem: 2,
tamanho da fonte: 14,
cor preta",
intensidade da fonte: Negrito',
textAlign: 'centro',
},
}
);
}
render() {
retornar (
<Ver estilo={this.styles.container}>
<Estilo do texto={this.styles.paragraph}>
{esse texto}
</Texto>
</Visualizar>
);
}
}
Você pode usar este componente em seus arquivos, como corrigir gagueira de vídeo no player VLC? Como resolver o atraso do vlc player é o seguinte: App.js
exportar função padrão App() {
retornar (
<Visualizar>
<TextPrompt text="Esta é uma caixa de texto"/>
</Visualizar>
);
}
Em uma tela móvel, o TextPrompt se parece com isto:
Agora, suponha que você queira usar esta caixa de texto para exibir uma mensagem de erro para seus usuários. Como corrigir problemas de áudio em Call of Duty: Warzone no PC? Call of Duty Warzone não consegue ouvir vozes Um redesenho simples inclui alterar a cor de fundo para vermelho Como consertar o gamepad do PS5 que não está respondendo no PC? Altere a cor do texto para branco conforme a imagem abaixo:
Você pode estender o componente TextPrompt para criar outro Como editar no SharePoint? Como o sharepoint usa um componente chamado ErrorPrompt usando o seguinte código:
importar TextPrompt de "./TextPrompt"
importar { StyleSheet } de "react-native"
exportar classe padrão ErrorPrompt extends TextPrompt {
construtor (acessórios) {
super(adereços)
// Cria e armazena o objeto de estilos no estado
this.styles = StyleSheet.create({
recipiente: {
alignItems: 'center',
justifyContent: 'center',
padding: 12,
borderRadius: 4,
backgroundColor: "red"
},
paragraph: {
margin: 2,
fontSize: 14,
color: "white",
fontWeight: 'bold',
textAlign: 'center',
},
}
);
}
}
您会注意到该组件没有 render 方法;如何修复光环无限语音聊天没声音?光环对话没有声音怎么办它从父类继承了 render 方法。因此,您不能对原始渲染方法进行更改;如何解决PremierePro不能导出问题?pr导出不了视频是什么原因您可以完全重用它或从头开始重写它。
但是,从头开始重写 render 方法没有意义,如何修复Discord搜索在PC上没反应?discord怎么搜不到频道因为您必须了解类的内部设计和结构TextPrompt。如何在Windows10上更改屏幕保护程序?29款免费的电脑屏保软件推荐由于重写 render 方法不切实际,如何修复光环无限中的数据包丢失问题?光环无限数据包丢失怎么办因此添加新的状态变量或对其进行更改也没有用。
这给我们带来了启示,即 React Native 中的继承不是推荐或有用的做法。如何阻止Windows不断最小化程序?禁止窗口最小化设置教程虽然众所周知,继承可以通过在大多数编程语言中重用代码来提供极大的便利,但由于 React Native 组件的结构,如何修复《彩虹六号:围攻》启动时的蓝屏问题?彩虹六号围攻一打开就蓝屏怎么解决它在 React Native 中不起作用。
比较继承与其他代码重用方法
那么,如果继承不是重用 React Native 代码的正确方式,修复ApexLegends错误0x00000017的解决方案那什么才是呢?让我们看一下在 React Native 中重用代码的其他一些方法。
道具
道具是将组件转变为独立的、可重用的 UI 构建块的默认方式。如何修复Apex游戏安全违规检测错误?apex检测到游戏安全冲突如何解决React Native 及其超类 React 建议尽可能使用 props 将参数传递给组件,并让它根据组件的值改变其行为。
prop 可以是任何数据类型,数字、字符串、对象等。事实上,我们已经在示例中使用了 propsTextPrompt来将文本的值传递给它。
下面的代码显示了如何配置传递promptTypein yourTextPrompt以在需要时将其转换为错误提示:
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
export default class TextPrompt extends React.Component {
constructor(props) {
super()
// Store the text from props in state
this.text = props.text
// Create and store the styles object in state
this.styles = StyleSheet.create({
container: {
alignItems: 'center',
justifyContent: 'center',
padding: 12,
borderRadius: 4,
backgroundColor: props.promptType === "error" ? "red": "white"
},
paragraph: {
margin: 2,
fontSize: 14,
color: props.promptType === "error" ? "white" : "black",
fontWeight: 'bold',
textAlign: 'center',
},
}
);
}
render() {
return (
<View style={this.styles.container}>
<Text style={this.styles.paragraph}>
{this.text}
</Text>
</View>
);
}
}
您可以在您的组件中使用它,如下所示:App.js
export default function App() {
return (
<View style={styles.container}>
<TextPrompt text="This is a normal message"/>
<TextPrompt text="This is an error message!" promptType="error"/>
</View>
);
}
现在,它将如下所示:
Props使用简单,可以传播到多层组件使用简单,可以根据您的需要
作品
解决 React Native 中代码重用问题的另一种方法是使用组合。组合通过将实际组件作为道具传递给其他组件,使道具游戏更上一层楼。这允许即时创建新的复杂组件。
有一个特殊的 propchildren允许您将组件的标签从空变为非空,这意味着您可以直接在组件的 JSX 标签内传递数据或组件。您可以通过两种方式使用此特殊children道具。
遏制
使用childrenprop,您可以传入预先格式化的组件而不是仅仅文本数据,并将现有组件用作容器。下面的代码显示了如何使用包含方法重写上面的示例:
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
export default class TextPrompt extends React.Component {
constructor(props) {
super()
// Store the children from props in state
this.children = props.children
// Create and store the styles object in state
this.styles = StyleSheet.create({
container: {
alignItems: 'center',
justifyContent: 'center',
padding: 12,
margin: 4,
borderRadius: 4,
backgroundColor: "white"
},
paragraph: {
margin: 2,
fontSize: 14,
color: "black",
fontWeight: 'bold',
textAlign: 'center',
},
}
);
}
render() {
return (
<View style={this.styles.container}>
<Text style={this.styles.paragraph}>
{this.children}
</Text>
</View>
);
}
}
以下是您将如何在您的:App.js
export default function App() {
return (
<View style={styles.container}>
<TextPrompt>
This is a normal message
</TextPrompt>
<TextPrompt>
<Text style={styles.error}>
This is an error message!
</Text>
</TextPrompt>
</View>
);
}
您会注意到第二个TextPrompt现在接受一个Text组件而不是一个简单的字符串。这使您能够将一段带样式的文本传递给组件TextPrompt,如下所示:
我们必须重新设计错误消息,使其以白底红字代替红底白字。通过组合传入自定义组件时,您无法控制接收组件的属性。
它获取您的组件并将它们呈现在您要求它使用的位置props.children。这是此方法的一个显着特征,建议不要在需要根据其子项修改容器行为的地方使用包含。但是,如果您希望构建可重复使用的多用途容器,则容器是一个不错的选择。
专业化
另一种利用组合来发挥优势的方法是通过重用现有组件来构建专用组件。
在整篇文章中,我们讨论了文本提示和错误提示。文本提示是可用于显示任何类型文本的通用组件,而错误提示是它的专用版本,仅用于显示错误。因此,错误提示是专门组件的完美示例。下面是如何在与上面相同的示例中实现专业化。
将TextPrompt如下所示:
import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
export default class TextPrompt extends React.Component {
constructor(props) {
super()
// Store the children from props in state
this.children = props.children
// Create and store the styles object in state
this.styles = StyleSheet.create({
container: {
alignItems: 'center',
justifyContent: 'center',
padding: 12,
margin: 4,
borderRadius: 4,
// Instead of relying on any internal calculations, the background color is now directly controlled via props
backgroundColor: props.backgroundColor || "white"
},
paragraph: {
margin: 2,
fontSize: 14,
// Instead of relying on any internal calculations, the text color is now directly controlled via props
color: props.textColor || "black,
fontWeight: 'bold',
textAlign: 'center',
},
}
);
}
render() {
return (
<View style={this.styles.container}>
<Text style={this.styles.paragraph}>
{/* We're still using composition, so children will be rendered as they're passed in*/}
{this.children}
</Text>
</View>
);
}
}
ErrorPrompt您现在将创建一个名为内部重用的新的专用组件TextPrompt:
import React from "react"
import TextPrompt from "./TextPrompt"
export default class ErrorPrompt extends React.Component {
constructor (props) {
super()
// Store the children in state
this.children = props.children
}
render() {
// Reuse the TextPrompt component to render a specialized ErrorPrompt
return <TextPrompt textColor="white" backgroundColor="red">{this.children}</TextPrompt>
}
}
现在,它变得非常简单易用:
export default function App() {
return (
<View style={styles.container}>
<TextPrompt>
This is a normal message
</TextPrompt>
<ErrorPrompt>
This is an error message!
</ErrorPrompt>
</View>
);
}
请注意现在使用该error组件是多么简单!调用环境无需关心error提示如何工作的内部细节,看起来恰到好处:
当涉及到为某些固定场景重用代码时,专用组件非常有用。但是,确定何时以及何时不选择专用组件需要开发人员的一些经验和专业知识。
最后的想法
继承是一个很好的 OOP 概念,可以在保持代码完整性的同时重用代码。然而,由于 React Native 组件的结构,继承并不是 React Native 的完美选择。
在本指南中,您了解了如何在 React Native 中实现继承。我们还探讨了它的缺点,然后回顾了一些重用代码的替代方法,同时避免了继承带来的复杂性,如 props、组合、包含和专业化。