Znáte JSX opravdu dobře?
Ať už jste začátečník nebo zkušený profesionál, je snadné přehlédnout nuance toho, jak JSX skutečně kompiluje a renderuje. Níže jsou 8 konceptů odvozených z běžných interview otázek. Projděte si je, otestujte se a zjistěte, zda dokážete najít chyby v poskytnutých příkladech.
- •8 klíčových konceptů JSX odvozených z běžných interview otázek
- •Jak JSX skutečně kompiluje a renderuje
- •Běžné chyby a úskalí v JSX syntaxi
- •Praktické příklady a opravy bugů
Definice komponenty
Začněme základy. Když napíšete React komponentu, co vlastně vytváříte?
Která z následujících možností nejlépe popisuje React komponentu?
Třída, která striktně renderuje HTML řetězce.
Funkce, která vrací popis UI
Šablonovací engine, který se kompiluje do Handlebars
Proměnné a interpolace
JSX nám umožňuje míchat JavaScript logiku přímo do našeho značkování. Ale syntaxe je důležitá.
Máte proměnnou const label = "Submit";. Jak to zobrazíte uvnitř tlačítka?
Možnost A
// Option A
<button>{{ label }}</button>Možnost B
// Option B
<button>{ label }</button>Možnost C
// Option C
<button>${ label }</button>Renderování "ničeho"
Někdy chcete, aby se komponenta úplně skryla.
Pro renderování žádného UI můžete jednoduše vrátit jakoukoli "falsy" JavaScript hodnotu.
Pravda nebo nepravda?
Pravda
Nepravda
Logika podmíněného renderování
Nováčci často hledají direktivy jako v-if (Vue) nebo *ngIf (Angular) uvnitř JSX.
Má JSX vestavěný atribut r-if nebo if pro podmíněné renderování?
Ano
Ne
Chyba "sousedních elementů"
Analyzujte následující fragment kódu. Vypadá dost nevinně, ale zhavaruje vaši aplikaci.
function Layout() {
return (
<Sidebar />
<MainContent />
);
}Komponenty musí být zabaleny v nadřazeném elementu nebo Fragmentu
Komponenty nemohou být PascalCase
Nic není špatně
Seznamy a klíče
Renderování polí je každodenní úkol v Reactu. Podívejte se na kód níže:
const products = [
{ id: 101, name: 'Laptop' },
{ id: 102, name: 'Mouse' }
];
// Which render method is valid?A
{products.forEach(p => <li>{p.name}</li>)}B
{products.map(p => <li>{p.name}</li>)}C
{products.map(p => <li key={p.id}>{p.name}</li>)}JavaScript "Return" past
JavaScript má funkci zvanou Automatické vložení středníku (ASI). Může zlomit vaše JSX, pokud si nedáte pozor na formátování.
function ProfileCard() {
return
<div className="card">
<h1>User Name</h1>
</div>
}Atributy a samozavírací tagy
Nakonec se podívejme na syntaxi specifickou pro převod HTML na JSX.
function SearchBar() {
return (
<div class="search-container">
<label>Search:</label>
<input type="text" name="query">
</div>
)
}