Na parte de hoje da tradução do curso React, sugerimos que você conclua a tarefa prática de criar conjuntos de componentes usando JavaScript e continue trabalhando no aplicativo TODO.

→ 
Parte 1: visão geral do curso, razões para a popularidade do React, ReactDOM e JSX→ 
Parte 2: componentes funcionais→ 
Parte 3: arquivos de componentes, estrutura do projeto→ 
Parte 4: componentes pai e filho→ 
Parte 5: início do trabalho em um aplicativo TODO, noções básicas de estilo→ 
Parte 6: sobre alguns recursos do curso, JSX e JavaScript→ 
Parte 7: estilos embutidos→ 
Parte 8: trabalho contínuo na aplicação TODO, familiaridade com as propriedades dos componentes→ 
Parte 9: propriedades do componente→ 
Parte 10: Workshop sobre como trabalhar com propriedades e estilo de componentes→ 
Parte 11: geração dinâmica de marcação e método de matrizes de mapas→ 
Parte 12: workshop, terceira etapa do trabalho em uma aplicação TODO→ 
Parte 13: componentes baseados em classe→ 
Parte 14: workshop sobre componentes baseados em classe, status dos componentes→ 
Parte 15: oficinas de saúde componentes→ 
Parte 16: a quarta etapa do trabalho em um aplicativo TODO, manipulação de eventos→ 
Parte 17: quinta etapa do trabalho em um aplicativo TODO, modificando o estado dos componentes→ 
Parte 18: a sexta etapa do trabalho em um aplicativo TODO→ 
Parte 19: métodos do ciclo de vida dos componentesParte 20: a primeira lição sobre renderização condicional→ 
Parte 21: segunda lição e workshop sobre renderização condicional→ 
Parte 22: sétima etapa do trabalho em um aplicativo TODO, baixando dados de fontes externas→ 
Parte 23: primeira lição sobre como trabalhar com formulários→ 
Parte 24: Segunda lição sobre formulários→ 
Parte 25: Workshop sobre como trabalhar com formulários→ 
Parte 26: arquitetura do aplicativo, padrão Container / Component→ 
Parte 27: projeto do cursoLição 22. Oficina. Formação dinâmica de conjuntos de componentes
→ 
Original▍Job
Com base no projeto de aplicativo React padrão gerado pelo 
create-react-app vschoolProducts.js create-react-app e usando o código do arquivo de dados 
vschoolProducts.js , crie um aplicativo que exiba uma lista de componentes do 
Product na página, formada usando o método de matriz padrão 
.map() em Com base nos dados de 
vschoolProducts.js .
Lembre-se de criar instâncias do componente e passar a elas o atributo- 
key com um identificador exclusivo; caso contrário, o sistema emitirá um aviso.
No processo de solução do problema, você pode usar a seguinte preparação do arquivo 
App.js import React from "react" import productsData from "./vschoolProducts" function App() { return (   <div>         </div> ) } export default App 
Aqui está o 
vschoolProducts.js arquivo 
vschoolProducts.js :
 const products = [   {       id: "1",       name: "Pencil",       price: 1,       description: "Perfect for those who can't remember things! 5/5 Highly recommend."   },   {       id: "2",       name: "Housing",       price: 0,       description: "Housing provided for out-of-state students or those who can't commute"   },   {       id: "3",       name: "Computer Rental",       price: 300,       description: "Don't have a computer? No problem!"   },   {       id: "4",       name: "Coffee",       price: 2,       description: "Wake up!"   },   {       id: "5",       name: "Snacks",       price: 0,       description: "Free snacks!"   },   {       id: "6",       name: "Rubber Duckies",       price: 3.50,       description: "To help you solve your hardest coding problems."   },   {       id: "7",       name: "Fidget Spinner",       price: 21.99,       description: "Because we like to pretend we're in high school."   },   {       id: "8",       name: "Sticker Set",       price: 14.99,       description: "To prove to other devs you know a lot."   } ] export default products 
▍Solução
Aqui está o código para o arquivo 
App.js :
 import React from "react" import Product from "./Product" import productsData from "./vschoolProducts" function App() {   const productComponents = productsData.map(item => <Product key={item.id} product={item}/>)     return (       <div>           {productComponents}       </div>   ) } export default App 
Observe que a propriedade 
id dos objetos do arquivo de dados é opcional. Essa propriedade foi útil para definir o atributo- 
key criado por meio do método 
.map() de instâncias do componente 
Product .
Aqui está o código para o arquivo 
Product.js :
 import React from "react" function Product(props) {   return (       <div>           <h2><font color="#3AC1EF">{props.product.name}</font></h2>           <p>{props.product.price.toLocaleString("en-US", { style: "currency", currency: "USD" })} - {props.product.description}</p>       </div>   ) } export default Product 
Aqui, ao derivar uma propriedade contendo o preço do produto, que é visível no componente como 
props.product.price , usamos o método 
toLocaleString() , pelo qual formatamos a quantidade do produto.
É assim que o projeto do aplicativo se parece no VSCode.
Aplicação no VSCodeE aqui está a página do aplicativo no navegador.
Página do aplicativo no navegadorPreste atenção na forma em que o valor das mercadorias é apresentado.
Lição 23. Oficina. Aplicação TODO. Estágio número 3
→ 
OriginalAqui continuamos a trabalhar no aplicativo TODO, que foi tratado 
aqui e 
aqui . Em particular, aqui você será solicitado a aplicar conhecimentos sobre a formação dinâmica de listas de componentes para criar uma lista de tarefas exibida pelo aplicativo.
▍Job
Usando o 
todosData.js caso 
todosData.js , cujo conteúdo é fornecido abaixo, crie uma lista de componentes 
TodoItem e exiba essa lista no componente 
App . Observe que você precisará modificar o código do componente 
TodoItem para que ele possa exibir as propriedades passadas para ele.
Aqui está o conteúdo do arquivo 
todosData.js :
 const todosData = [   {       id: 1,       text: "Take out the trash",       completed: true   },   {       id: 2,       text: "Grocery shopping",       completed: false   },   {       id: 3,       text: "Clean gecko tank",       completed: false   },   {       id: 4,       text: "Mow lawn",       completed: true   },   {       id: 5,       text: "Catch up on Arrested Development",       completed: false   } ] export default todosData 
▍Solução
Aqui está o código para o arquivo 
App.js :
 import React from "react" import TodoItem from "./TodoItem" import todosData from "./todosData" function App() {   const todoItems = todosData.map(item => <TodoItem key={item.id} item={item}/>)     return (       <div className="todo-list">           {todoItems}       </div>   ) } export default App 
Aqui está o código para o arquivo 
TodoItem.js :
 import React from "react" function TodoItem(props) {   return (       <div className="todo-item">           <input type="checkbox" checked={props.item.completed}/>           <p>{props.item.text}</p>       </div>   ) } export default TodoItem 
Aqui está o projeto do aplicativo no VSCode.
Aplicação no VSCodeDeve-se notar que, após a conclusão do trabalho previsto nesta lição prática, nós, apesar de equiparmos o aplicativo com novos recursos, interrompemos sua funcionalidade. Em particular, estamos falando sobre o estado das bandeiras. Os sinalizadores para os quais a propriedade 
props.item.completed configurada como 
true foram usados para definir o estado serão verificados, os sinalizadores para os quais a mesma propriedade configurada como 
false foi usada serão desmarcados. Mas se você clicar no sinalizador na página do aplicativo, nada acontecerá, pois configuramos incorretamente o elemento HTML correspondente. Você pode ver um aviso sobre isso no console.
Página do aplicativo no navegador e aviso no consoleMais tarde, falaremos sobre formulários e corrigiremos nosso aplicativo de treinamento enquanto continuamos trabalhando nele.
Sumário
Nesta lição, você teve a oportunidade de praticar a criação de arquivos de componentes, trabalhando com propriedades que são passadas para instâncias de componentes quando elas são criadas e usando o método padrão da matriz JavaScript 
.map() . Além disso, aqui continuamos a trabalhar em um aplicativo de treinamento. Da próxima vez, falaremos sobre componentes baseados em classe.
Caros leitores! Você já domina a técnica de usar o método de matriz JavaScript 
.map() para criar conjuntos de componentes?
