chore(i18n,curriculum): update translations (#43178)

This commit is contained in:
camperbot
2021-08-20 00:00:51 -07:00
committed by GitHub
parent 1b7ddb13d2
commit 703394b127
130 changed files with 691 additions and 600 deletions

View File

@ -2,7 +2,6 @@
id: 5a94fe0569fb03452672e45c
title: 將網格劃分爲區域模板
challengeType: 0
videoUrl: 'https://scrimba.com/p/pByETK/cLLpGAy'
forumTopicId: 301130
dashedName: divide-the-grid-into-an-area-template
---

View File

@ -33,11 +33,15 @@ io.use(
);
```
記得要把 `key``store` 加到 app 的 `session` 中間件。 這樣,*SocketIO* 才知道該對哪個 session 執行此配置
請注意,爲 Socket.IO 配置 Passport 認證與我們爲 API 配置的 `session` 中間件非常相似。 這是因爲它們旨在使用相同的身份驗證方法 — — 從 cookie 獲取會話 id 並驗證它
以前,當我們配置 `session` 中間件的時候,我們沒有爲 session 明確設置 cookie 名稱(`key`)。 這是因爲 `session` 包使用了默認值。 現在我們已經添加了另一個需要從 cookie 訪問相同值的軟件包, 我們需要在兩個配置對象中設置 `key` 值。
請將帶有 cookie 名稱的 `key` 添加到匹配 Socket.IO 密鑰的 `session` 中間件。 另外,將 `store` 引用添加到選項中,靠近我們設置 `saveUninitialized: true` 的位置。 這樣Socket.IO 才知道與哪個 session 關聯。
<hr />
接下來,我們可以定義 `success``fail` 回調函數:
接下來,定義 `success``fail` 回調函數:
```js
function onAuthorizeSuccess(data, accept) {
@ -53,15 +57,15 @@ function onAuthorizeFail(data, message, error, accept) {
}
```
現在,我們可以通過 `socket.request.user` 訪問用戶數據。 爲此,你可以這樣做:
現在,我們可以通過 `socket.request.user` 訪問用戶對象。 例如,你可以這樣做:
```js
console.log('user ' + socket.request.user.name + ' connected');
```
這樣,我們可以在 console 裏看到誰連接到了我們的服務器。
它將在服務器控制檯記錄已連接的用戶!
完成上要求後,請提交你的頁面鏈接。 如果你遇到了問題,可以參考[這裏](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254)的答案。
完成上要求後,請提交你的頁面鏈接。 如果你遇到了問題,可以參考[這裏](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254)的答案。
# --hints--

View File

@ -13,9 +13,9 @@ dashedName: test-for-truthiness
`isTrue()` 僅當給出的值爲 Boolean 的 `true` 時可以通過測試;`isNotTrue()` 則會在給出除 `true` 以外的值時通過測試。
```js
assert.isTrue(true, 'this will pass with the boolean value true');
assert.isTrue('true', 'this will NOT pass with the string value "true"');
assert.isTrue(1, 'this will NOT pass with the number value 1');
assert.isTrue(true, 'This will pass with the boolean value true');
assert.isTrue('true', 'This will NOT pass with the string value "true"');
assert.isTrue(1, 'This will NOT pass with the number value 1');
```
`isFalse()``isNotFalse()` 同樣存在,與上面提到的兩個方法類似,只不過它們針對值爲 `false` 的布爾值。

View File

@ -2,7 +2,6 @@
id: 5a94fe0569fb03452672e45c
title: 将网格划分为区域模板
challengeType: 0
videoUrl: 'https://scrimba.com/p/pByETK/cLLpGAy'
forumTopicId: 301130
dashedName: divide-the-grid-into-an-area-template
---

View File

@ -33,11 +33,15 @@ io.use(
);
```
记得要把 `key``store` 加到 app 的 `session` 中间件。 这样,*SocketIO* 才知道该对哪个 session 执行此配置
请注意,为 Socket.IO 配置 Passport 认证与我们为 API 配置的 `session` 中间件非常相似。 这是因为它们旨在使用相同的身份验证方法 — — 从 cookie 获取会话 id 并验证它
以前,当我们配置 `session` 中间件的时候,我们没有为 session 明确设置 cookie 名称(`key`)。 这是因为 `session` 包使用了默认值。 现在我们已经添加了另一个需要从 cookie 访问相同值的软件包, 我们需要在两个配置对象中设置 `key` 值。
请将带有 cookie 名称的 `key` 添加到匹配 Socket.IO 密钥的 `session` 中间件。 另外,将 `store` 引用添加到选项中,靠近我们设置 `saveUninitialized: true` 的位置。 这样Socket.IO 才知道与哪个 session 关联。
<hr />
接下来,我们可以定义 `success``fail` 回调函数:
接下来,定义 `success``fail` 回调函数:
```js
function onAuthorizeSuccess(data, accept) {
@ -53,15 +57,15 @@ function onAuthorizeFail(data, message, error, accept) {
}
```
现在,我们可以通过 `socket.request.user` 访问用户数据。 为此,你可以这样做:
现在,我们可以通过 `socket.request.user` 访问用户对象。 例如,你可以这样做:
```js
console.log('user ' + socket.request.user.name + ' connected');
```
这样,我们可以在 console 里看到谁连接到了我们的服务器。
它将在服务器控制台记录已连接的用户!
完成上要求后,请提交你的页面链接。 如果你遇到了问题,可以参考[这里](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254)的答案。
完成上要求后,请提交你的页面链接。 如果你遇到了问题,可以参考[这里](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254)的答案。
# --hints--

View File

@ -13,9 +13,9 @@ dashedName: test-for-truthiness
`isTrue()` 仅当给出的值为 Boolean 的 `true` 时可以通过测试;`isNotTrue()` 则会在给出除 `true` 以外的值时通过测试。
```js
assert.isTrue(true, 'this will pass with the boolean value true');
assert.isTrue('true', 'this will NOT pass with the string value "true"');
assert.isTrue(1, 'this will NOT pass with the number value 1');
assert.isTrue(true, 'This will pass with the boolean value true');
assert.isTrue('true', 'This will NOT pass with the string value "true"');
assert.isTrue(1, 'This will NOT pass with the number value 1');
```
`isFalse()``isNotFalse()` 同样存在,与上面提到的两个方法类似,只不过它们针对值为 `false` 的布尔值。

View File

@ -2,7 +2,6 @@
id: 5a94fe0569fb03452672e45c
title: Divide la cuadrícula en una plantilla de área
challengeType: 0
videoUrl: 'https://scrimba.com/p/pByETK/cLLpGAy'
forumTopicId: 301130
dashedName: divide-the-grid-into-an-area-template
---

View File

@ -43,7 +43,7 @@ assert.deepEqual(
);
```
Todos los elementos del primer arreglo deben ser añadidos al segundo arreglo en su orden original.
Todos los elementos del primer arreglo deben ser añadidos al segundo arreglo en su orden original. `frankenSplice([1, 2, 3, 4], [], 0)` debe devolver `[1, 2, 3, 4]`.
```js
assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4]);

View File

@ -33,13 +33,13 @@ No crees ninguna variable nueva.
# --hints--
`studlyCapVar` debe definirse y tener un valor de `10`.
`studlyCapVar` debe estar definido y tener un valor de `10`.
```js
assert(typeof studlyCapVar !== 'undefined' && studlyCapVar === 10);
```
`properCamelCase` debe definirse y tener una cadena con valor `A String`.
`properCamelCase` debe estar definido y tener una cadena con valor `A String`.
```js
assert(
@ -47,25 +47,25 @@ assert(
);
```
`titleCaseOver` debe definirse y tener una cadena con valor `9000`.
`titleCaseOver` debe estar definido y tener una cadena con valor `9000`.
```js
assert(typeof titleCaseOver !== 'undefined' && titleCaseOver === 9000);
```
`studlyCapVar` debe usar camelCase tanto en las sección de declaración como de asignación.
`studlyCapVar` debe usar camelCase tanto en las secciones de declaración como de asignación.
```js
assert(code.match(/studlyCapVar/g).length === 2);
```
`properCamelCase` debe usar camelCase tanto en las sección de declaración como de asignación.
`properCamelCase` debe usar camelCase tanto en las secciones de declaración como de asignación.
```js
assert(code.match(/properCamelCase/g).length === 2);
```
`titleCaseOver` debe usar camelCase tanto en las sección de declaración como de asignación.
`titleCaseOver` debe usar camelCase tanto en las secciones de declaración como de asignación.
```js
assert(code.match(/titleCaseOver/g).length === 2);

View File

@ -8,7 +8,7 @@ dashedName: iterate-over-all-properties
# --description--
Ahora has visto dos tipos de propiedades: <dfn>propiedades directas</dfn> y propiedades `prototype`. Las propiedades directas se definen directamente en la propia instancia del objeto. Y las propiedades `prototype` se definen en el `prototype`.
Ahora has visto dos tipos de propiedades: <dfn>propiedades directas</dfn> y propiedades `prototype`. Las propiedades directas se definen directamente en la propia instancia del objeto. Y las propiedades prototype se definen en el `prototype`.
```js
function Bird(name) {

View File

@ -1,6 +1,6 @@
---
id: 561add10cb82ac38a17523bc
title: Certificato API e microservizi
title: Certificato di sviluppo Back End e API
challengeType: 7
isPrivate: true
tests:

View File

@ -1,6 +1,6 @@
---
id: 5a553ca864b52e1d8bceea14
title: Certificato Visualizzazione Dati
title: Certificato Data Visualization
challengeType: 7
isPrivate: true
tests:

View File

@ -9,7 +9,7 @@ tests:
title: Controllo del prezzo delle azioni
-
id: 587d824a367417b2b2512c45
title: Pannello messaggi Anonimo
title: Pannello messaggi anonimo
-
id: 5e46f979ac417301a38fb932
title: Port Scanner

View File

@ -9,7 +9,7 @@ tests:
title: Costruisci un visualizzatore di Markdown
-
id: bd7156d8c242eddfaeb5bd13
title: Costruisci una Classifica Camper
title: Costruisci una Classifica dei Camper
-
id: bd7155d8c242eddfaeb5bd13
title: Costruisci una scatola delle ricette

View File

@ -9,10 +9,10 @@ tests:
title: Convertitore Metrico-Imperiale
-
id: 587d8249367417b2b2512c42
title: Tracciatore di Problemi
title: Tracciatore di problemi
-
id: 587d824a367417b2b2512c43
title: Biblioteca Personale
title: Biblioteca personale
-
id: 5e601bf95ac9d0ecd8b94afd
title: Risolutore Sudoku

View File

@ -1,6 +1,6 @@
---
id: 606243f50267e718b1e755f4
title: Certificato Database Relazionali
title: Certificato Database Relazionale
challengeType: 7
isPrivate: true
tests:
@ -18,4 +18,4 @@ tests:
title: Database della Tavola Periodica
-
id: 602da04c22201c65d2a019f4
title: Final Boss
title: Gioco di indovinare il numero

View File

@ -2,7 +2,6 @@
id: 5a94fe0569fb03452672e45c
title: Dividere la griglia in un template area
challengeType: 0
videoUrl: 'https://scrimba.com/p/pByETK/cLLpGAy'
forumTopicId: 301130
dashedName: divide-the-grid-into-an-area-template
---
@ -15,25 +14,25 @@ Puoi raggruppare le celle della griglia in un'<dfn>area</dfn> e dare un nome per
grid-template-areas:
"header header header"
"advert content content"
"footer footer footer";
"advert footer footer";
```
Il codice qui sopra riunisce le tre celle superiori in un'area denominata `header`, le tre celle inferiori in un'area `footer`, e crea due aree nella riga intermedia; `advert` e `content`. **Nota:** Ogni parola nel codice rappresenta una cella e ogni coppia di virgolette rappresenta una riga. In aggiunta alle etichette personalizzate, puoi usare un punto (`.`) per designare una cella vuota nella griglia.
Questo codice raggruppa le celle della griglia in quattro aree; `header`, `advert`, `content` e `footer`. Ogni parola rappresenta una cella e ogni coppia di virgolette rappresenta una riga.
# --instructions--
Posiziona il template dell'area in modo che la cella etichettata `advert` diventi una cella vuota.
Cambia il template in modo che l'area `footer` copra l'intera riga inferiore. La definizione delle aree non avrà alcun effetto visivo in questo momento. Più tardi, farai usare un'area ad un oggetto per vedere come funziona.
# --hints--
La classe `container` dovrebbe avere una proprietà `grid-template-areas` simile all'anteprima ma con `.` al posto dell'area `advert`.
La classe `container` dovrebbe avere una proprietà `grid-template-areas` simile all'esempio ma con con l'area `footer` che si espande attraverso tutta la riga più in basso.
```js
assert(
__helpers
.removeCssComments(code)
.match(
/.container\s*?{[\s\S]*grid-template-areas\s*?:\s*?"\s*?header\s*?header\s*?header\s*?"\s*?"\s*?.\s*?content\s*?content\s*?"\s*?"\s*?footer\s*?footer\s*?footer\s*?"\s*?;[\s\S]*}/gi
/.container\s*?{[\s\S]*grid-template-areas\s*?:\s*?"\s*?header\s*?header\s*?header\s*?"\s*?"\s*?advert\s*?content\s*?content\s*?"\s*?"\s*?footer\s*?footer\s*?footer\s*?"\s*?;[\s\S]*}/gi
)
);
```
@ -63,7 +62,7 @@ assert(
/* Only change code below this line */
"header header header"
"advert content content"
"footer footer footer";
"advert footer footer";
/* Only change code above this line */
}
</style>
@ -99,7 +98,7 @@ assert(
grid-template-areas:
"header header header"
". content content"
"advert content content"
"footer footer footer";
}
</style>

View File

@ -43,7 +43,7 @@ assert.deepEqual(
);
```
Tutti gli elementi del primo array dovrebbero essere aggiunti al secondo array nel loro ordine originale.
Tutti gli elementi del primo array dovrebbero essere aggiunti al secondo array nel loro ordine originale. `frankenSplice([1, 2, 3, 4], [], 0)` dovrebbe restituire `[1, 2, 3, 4]`.
```js
assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4]);

View File

@ -8,7 +8,7 @@ dashedName: iterate-over-all-properties
# --description--
Ora hai visto due tipi di proprietà: <dfn>proprietà proprie</dfn> e proprietà di prototipo (`prototype`). Le proprietà proprie sono definite direttamente nell'istanza dell'oggetto. E le proprietà di prototipo sono definite sul `prototype`.
Ora hai visto due tipi di proprietà: <dfn>proprietà proprie</dfn> e proprietà di prototipo (`prototype`). Le proprietà proprie sono definite direttamente nell'istanza dell'oggetto. E le proprietà di prototipo sono definite nel `prototype`.
```js
function Bird(name) {

View File

@ -20,7 +20,7 @@ Puoi aggiungere Bootstrap a qualsiasi app inserendo il seguente codice nella par
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"/>
```
In questo caso, lo abbiamo già aggiunto per te a questa pagina dietro le quinte. Nota che che usare `>` o `/>` per chiudere il tag `link` è accettabile.
In questo caso, lo abbiamo già aggiunto per te a questa pagina dietro le quinte. Nota che è accettabile usare sia `>` che `/>` per chiudere il tag `link`.
Per iniziare, dovremmo annidare tutto il nostro HTML (tranne il tag `link` e l'elemento `style`) in un elemento `div` di classe `container-fluid`.

View File

@ -10,7 +10,7 @@ dashedName: build-a-25--5-clock
**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: <https://codepen.io/freeCodeCamp/full/XpKrrW>.
Compila le [user stories](https://en.wikipedia.org/wiki/User_story) qui sotto e fai passare tutti i test. Dalle il tuo stile personale.
Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story) e fai passare tutti i test. Usa il tuo stile personale.
Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery per completare questo progetto. Dovresti usare un framework frontend (come React per esempio) perché questa sezione riguarda l'apprendimento dei framework per il frontend. Ulteriori tecnologie non elencate sopra non sono raccomandate e usarle è a tuo rischio. Stiamo cercando di supportare altri framework per il frontend come Angular e Vue, ma attualmente non sono supportati. Accetteremo e cercheremo di risolvere tutte le segnalazioni di problemi che utilizzano lo stack tecnologico suggerito per questo progetto. Happy coding!

View File

@ -10,7 +10,7 @@ dashedName: build-a-drum-machine
**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: <https://codepen.io/freeCodeCamp/full/MJyNMd>.
Compila le [user stories](https://en.wikipedia.org/wiki/User_story) qui sotto e fai passare tutti i test. Dalle il tuo stile personale.
Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story) e fai passare tutti i test. Usa il tuo stile personale.
Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery per completare questo progetto. Dovresti usare un framework frontend (come React per esempio) perché questa sezione riguarda l'apprendimento dei framework per il frontend. Ulteriori tecnologie non elencate sopra non sono raccomandate e usarle è a tuo rischio. Stiamo cercando di supportare altri framework per il frontend come Angular e Vue, ma attualmente non sono supportati. Accetteremo e cercheremo di risolvere tutte le segnalazioni di problemi che utilizzano lo stack tecnologico suggerito per questo progetto. Happy coding!
@ -18,7 +18,7 @@ Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React,
**User Story #2:** All'interno di `#drum-machine` posso vedere un elemento con un corrispondente `id="display"`.
**User Story #3:** Dentro a `#drum-machine` posso vedere 9 elementi tamburo cliccabili, ognuno di classe `drum-pad`, con un id univoco che descrive la clip audio che l'elemento dovrà avviare, e un testo interno che corrisponde a uno dei seguenti tasti sulla tastiera: `Q` `W`, `E`, `A`, `S`, `D`, `Z`, `X`, `C`. I tamburi DEVONO essere in questo ordine.
**User Story #3:** Dentro a `#drum-machine` posso vedere 9 elementi tamburo cliccabili, ognuno di classe `drum-pad`, con un id univoco che descrive la clip audio che l'elemento dovrà avviare, e un testo interno che corrisponde a uno dei seguenti tasti sulla tastiera: `Q`, `W`, `E`, `A`, `S`, `D`, `Z`, `X`, `C`. I tamburi DEVONO essere in questo ordine.
**User Story #4:** All'interno di ogni `.drum-pad`, ci dovrebbe essere un elemento HTML5 `audio` che ha un attributo `src` che indica una clip audio, un nome di classe `clip` e un id corrispondente al testo interno del `.drum-pad` genitore (ad es. `id="Q"`, `id="W"`, `id="E"` ecc.).

View File

@ -10,7 +10,7 @@ dashedName: build-a-javascript-calculator
**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: <https://codepen.io/freeCodeCamp/full/wgGVVX>.
Compila le [user stories](https://en.wikipedia.org/wiki/User_story) qui sotto e fai passare tutti i test. Dalle il tuo stile personale.
Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story) e fai passare tutti i test. Usa il tuo stile personale.
Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery per completare questo progetto. Dovresti usare un framework frontend (come React per esempio) perché questa sezione riguarda l'apprendimento dei framework per il frontend. Ulteriori tecnologie non elencate sopra non sono raccomandate e usarle è a tuo rischio. Stiamo cercando di supportare altri framework per il frontend come Angular e Vue, ma attualmente non sono supportati. Accetteremo e cercheremo di risolvere tutte le segnalazioni di problemi che utilizzano lo stack tecnologico suggerito per questo progetto. Happy coding!
@ -26,7 +26,7 @@ Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React,
**User Story #6:** La mia calcolatrice dovrebbe contenere un elemento per visualizzare i valori con un corrispondente `id="display"`.
**User Story #7:** In qualsiasi momento, premendo il pulsante `clear` dovrebbero essere cancellati i valori di input e output, e la calcolatrice dovrebbe tornare suo stato iniziale; nell'elemento con l'id `display` dovrebbe essere mostrato 0.
**User Story #7:** In qualsiasi momento, premendo il pulsante `clear` dovrebbero essere cancellati i valori di input e output, e la calcolatrice dovrebbe tornare al suo stato iniziale; nell'elemento con l'id `display` dovrebbe essere mostrato 0.
**User Story #8:** Quando inserisco dei numeri, dovrei essere in grado di vedere il mio input nell'elemento con l'id `display`.

View File

@ -10,7 +10,7 @@ dashedName: build-a-markdown-previewer
**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: <https://codepen.io/freeCodeCamp/full/GrZVVO>.
Compila le [user stories](https://en.wikipedia.org/wiki/User_story) qui sotto e fai passare tutti i test. Dalle il tuo stile personale.
Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story) e fai passare tutti i test. Usa il tuo stile personale.
Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery per completare questo progetto. Dovresti usare un framework frontend (come React per esempio) perché questa sezione riguarda l'apprendimento dei framework per il frontend. Ulteriori tecnologie non elencate sopra non sono raccomandate e usarle è a tuo rischio. Stiamo cercando di supportare altri framework per il frontend come Angular e Vue, ma attualmente non sono supportati. Accetteremo e cercheremo di risolvere tutte le segnalazioni di problemi che utilizzano lo stack tecnologico suggerito per questo progetto. Happy coding!

View File

@ -10,7 +10,7 @@ dashedName: build-a-random-quote-machine
**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: <https://codepen.io/freeCodeCamp/full/qRZeGZ>.
Compila le [user stories](https://en.wikipedia.org/wiki/User_story) qui sotto e fai passare tutti i test. Dalle il tuo stile personale.
Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story) e fai passare tutti i test. Usa il tuo stile personale.
Puoi utilizzare qualsiasi mix di HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery per completare questo progetto. Dovresti usare un framework frontend (come React per esempio) perché questa sezione riguarda l'apprendimento dei framework per il frontend. Ulteriori tecnologie non elencate sopra non sono raccomandate e usarle è a tuo rischio. Stiamo cercando di supportare altri framework per il frontend come Angular e Vue, ma attualmente non sono supportati. Accetteremo e cercheremo di risolvere tutte le segnalazioni di problemi che utilizzano lo stack tecnologico suggerito per questo progetto. Happy coding!

View File

@ -15,7 +15,7 @@ Vedi come abbiamo fatto rimbalzare tutti gli elementi del tuo `button`? Li abbia
Hai appena usato la funzione `.addClass()` di jQuery, che ti permette di aggiungere classi agli elementi.
Innanzitutto, individuiamo bene gli elementi `div` con la classe `well` utilizzando il selettore `$(".well")`.
Innanzitutto, individuiamo gli elementi `div` con la classe `well` utilizzando il selettore `$(".well")`.
Nota che, proprio come con le dichiarazioni CSS, devi digitare un `.` prima del nome della classe.

View File

@ -42,7 +42,7 @@ La variabile `styles` dovrebbe avere una proprietà `border` impostata su un val
assert(styles.border === '2px solid purple');
```
Il componente dovrebbe presentare un elemento `div`.
Il componente dovrebbe mostrare un elemento `div`.
```js
assert(

View File

@ -48,7 +48,7 @@ assert(
);
```
Cliccando sull'elemento `button` dovrebbe essere eseguito il metodo `handleClick` e dovrebbe essere impostare lo stato `text` a `You clicked!`.
Cliccando sull'elemento `button` dovrebbe essere eseguito il metodo `handleClick` e dovrebbe impostare lo stato `text` a `You clicked!`.
```js
async () => {

View File

@ -40,7 +40,7 @@ Ecco un esempio:
Definisci una nuova costante `JSX` che esegua il render di un `div` che contenga i seguenti elementi in ordine:
Un `h1`, un `p`e una lista non ordinata che contiene tre elementi `li`. Puoi includere qualsiasi testo desideri all'interno di ogni elemento.
Un `h1`, un `p` e una lista non ordinata che contiene tre elementi `li`. Puoi includere qualsiasi testo desideri all'interno di ogni elemento.
**Nota:** Quando si visualizzano più elementi come questo, è possibile avvolgerli tutti in parentesi, ma non è strettamente necessario. Nota anche che questa sfida utilizza un tag `div` per avvolgere tutti gli elementi figli all'interno di un singolo elemento genitore. Se rimuovi il `div`, il JSX non sarà più transcodificato. Tienilo a mente, perché questo si applicherà anche quando restituirai elementi JSX in componenti React.

View File

@ -1,6 +1,6 @@
---
id: 5a24c314108439a4d4036170
title: Creare un componente con state
title: Creare un componente con stato
challengeType: 6
forumTopicId: 301391
dashedName: create-a-stateful-component

View File

@ -8,7 +8,7 @@ dashedName: introducing-inline-styles
# --description--
Ci sono altri concetti complessi che aggiungono potenti funzionalità al tuo codice React. Ma forse ti stai chiedendo come stilizzare quegli elementi JSX che crei in React. Probabilmente sai che non sarà esattamente come lavorare con HTML a causa del [modo in cui applichi le classi agli elementi JSX](/learn/front-end-development-libraries/react/define-an-html-class-in-jsx).
Ci sono altri concetti complessi che aggiungono potenti funzionalità al tuo codice React. Ma forse ti stai chiedendo come stilizzare quegli elementi JSX che crei in React. Probabilmente sai che non sarà esattamente come lavorare con HTML a causa del [modo in cui applichi le classi agli elementi JSX](/italian/learn/front-end-development-libraries/react/define-an-html-class-in-jsx).
Se importi degli stili da un foglio di stile, non è poi così diverso. Applichi una classe al tuo elemento JSX usando l'attributo `className` e applichi gli stili alla classe nel tuo foglio di stile. Un'altra opzione è quella di applicare degli stili in linea, che sono molto comuni nello sviluppo di ReactJS.
@ -31,7 +31,6 @@ Vedi come abbiamo usato camelCase nella proprietà `fontSize`? Questo perché Re
Aggiungi un attributo `style` al `div`nell'editor di codice per dare al testo un colore rosso e una dimensione del carattere di `72px`.
Nota che è possibile impostare facoltativamente la dimensione del carattere come un numero, omettendo le unità `px` o scrivendole come `72px`.
# --hints--
Il componente dovrebbe mostrare un elemento `div`.

View File

@ -33,11 +33,15 @@ io.use(
);
```
Assicurati di aggiungere la `key` e lo `store` al middleware `session` montato sull'app. Questo è necessario per dire a *SocketIO* a quale sessione riferirsi.
Nota che la configurazione dell'autenticazione Passport per Socket.IO è molto simile a quella che abbiamo preparato per il middleware `session` per l'API. Questo perché utilizzano lo stesso metodo di autenticazione - ottenere l'id di sessione da un cookie e convalidarlo.
In precedenza, quando abbiamo configurato il middleware `session`, non abbiamo esplicitamente impostato il nome del cookie per la sessione (`key`). Questo perché il pacchetto `session` usava il valore predefinito. Ora che abbiamo aggiunto un altro pacchetto che necessita di accedere allo stesso valore dai cookie, abbiamo bisogno di impostare esplicitamente il valore `key` in entrambi gli oggetti di configurazione.
Assicurati di aggiungere la `key` con il nome del cookie al middleware `session` che corrisponde alla chiave Socket.IO. Inoltre, aggiungi il riferimento `store` alle opzioni, vicino a dove abbiamo impostato `saveUninitialized: true`. Questo è necessario per dire a Socket.IO a quale sessione deve fare riferimento.
<hr />
Ora, definisci le funzioni di callback per `success` e `fail`:
Ora definisci le funzioni di callback per `success` e `fail`:
```js
function onAuthorizeSuccess(data, accept) {
@ -61,7 +65,7 @@ console.log('user ' + socket.request.user.name + ' connected');
Scriverà sulla console del server chi si è connesso!
Invia la tua pagina quando pensi che sia corretto. Se dovessi incontrare degli errori, puoi controllare il progetto fino a questo punto [qui](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254).
Invia la tua pagina quando pensi di averlo fatto correttamente. Se dovessi incontrare degli errori, puoi controllare il progetto fino a questo punto [qui](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254).
# --hints--
@ -103,7 +107,7 @@ Invia la tua pagina quando pensi che sia corretto. Se dovessi incontrare degli e
);
```
passportSocketIo dovrebbe essere richiesta correttamente.
passportSocketIo dovrebbe essere richiesto correttamente.
```js
(getUserInput) =>
@ -121,7 +125,7 @@ passportSocketIo dovrebbe essere richiesta correttamente.
);
```
passportSocketIo dovrebbe essere configurata correttamente.
passportSocketIo dovrebbe essere configurato correttamente.
```js
(getUserInput) =>

View File

@ -10,29 +10,37 @@ dashedName: run-functional-tests-on-an-api-response-using-chai-http-iii---put-me
Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
Nel prossimo esempio vedremo come inviare i dati in nel corpo di un payload di richiesta. Stiamo per testare una richiesta PUT. L'endpoint `'/travellers'` accetta un oggetto JSON che prende la struttura:
Quando testi una richiesta `PUT`, invierai spesso dei dati con essa. I dati che includi con la tua richiesta `PUT` sono chiamati corpo della richiesta.
```json
{
"surname": [last name of a traveller of the past]
}
Per inviare una richiesta `PUT` e un oggetto JSON all'endpoint `'/travellers'`, è possibile utilizzare i metodi `put` e `send` del plugin`chai-http`:
```js
chai
.request(server)
.put('/travellers')
.send({
"surname": [last name of a traveller of the past]
})
...
```
La rotta risponde con:
```json
{
"name": [first name], "surname": [last name], "dates": [birth - death years]
"name": [first name],
"surname": [last name],
"dates": [birth - death years]
}
```
Vedi il codice del server per maggiori dettagli.
Vedi il codice del server per le diverse risposte all'endpoint `'/travellers'`.
# --instructions--
All'interno di `tests/2_functional-tests.js`, modifica il test `'send {surname: "Colombo"}'` (`// #3`):
All'interno di `tests/2_functional-tests.js`, cambia il test `'Send {surname: "Colombo"}'` (`// #3`) e usa i metodi `put` e `send` per testare l'endpoint `'/travellers'`.
Invia la seguente risposta JSON come payload:
Invia il seguente oggetto JSON con la tua richiesta PUT:
```json
{
@ -42,12 +50,12 @@ Invia la seguente risposta JSON come payload:
Controlla quanto segue, all'interno della callback `request.end`:
1. `status`
2. `type`
3. `body.name`
4. `body.surname`
1. Lo `status` dovrebbe essere `200`
2. Il `type` dovrebbe essere `application/json`
3. Il `body.name` dovrebbe essere `Cristoforo`
4. Il `body.surname` dovrebbe essere `Colombo`
Segui l'ordine di asserzione indicato sopra - facciamo affidamento su di esso. Assicurati di rimuovere `assert.fail()`, una volta finito.
Segui l'ordine di asserzione indicato sopra - facciamo affidamento su di esso. Inoltre, assicurati di rimuovere `assert.fail()` una volta finito.
# --hints--
@ -65,7 +73,7 @@ Tutti i test dovrebbero essere superati.
);
```
Dovresti verificare che 'res.status' sia 200.
Dovresti verificare che `res.status` sia 200.
```js
(getUserInput) =>
@ -81,7 +89,7 @@ Dovresti verificare che 'res.status' sia 200.
);
```
Dovresti verificare che 'res.type' sia 'application/json'.
Dovresti verificare che `res.type` sia `'application/json'`.
```js
(getUserInput) =>
@ -97,7 +105,7 @@ Dovresti verificare che 'res.type' sia 'application/json'.
);
```
Dovresti verificare che 'res.body.name' sia 'Cristoforo''.
Dovresti verificare che `res.body.name` sia `'Cristoforo'`.
```js
(getUserInput) =>
@ -113,7 +121,7 @@ Dovresti verificare che 'res.body.name' sia 'Cristoforo''.
);
```
Dovresti verificare che 'res.body.surname' sia 'Colombo''.
Dovresti verificare che `res.body.surname` sia `'Colombo'`.
```js
(getUserInput) =>

View File

@ -13,9 +13,9 @@ Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza
`isTrue()` testa per il valore boleano `true` e `isNotTrue()` passa per qualsiasi cosa che non sia il valore booleano `true`.
```js
assert.isTrue(true, 'this will pass with the boolean value true');
assert.isTrue('true', 'this will NOT pass with the string value "true"');
assert.isTrue(1, 'this will NOT pass with the number value 1');
assert.isTrue(true, 'This will pass with the boolean value true');
assert.isTrue('true', 'This will NOT pass with the string value "true"');
assert.isTrue(1, 'This will NOT pass with the number value 1');
```
Esistono anche `isFalse()` e `isNotFalse()`, si comportano in maniera simile alle loro controparti con true tranne per il fatto che testano per il valore booleano `false`.

View File

@ -1,15 +1,21 @@
---
id: 561add10cb82ac38a17523bc
title: APIs and Microservices Certificate
title: Certificado de APIs e desenvolvimento de back-end
challengeType: 7
isPrivate: true
tests:
- id: bd7158d8c443edefaeb5bdef
title: Timestamp Microservice
- id: bd7158d8c443edefaeb5bdff
title: Request Header Parser Microservice
- id: bd7158d8c443edefaeb5bd0e
title: URL Shortener Microservice
- id: 5a8b073d06fa14fcfde687aa
title: Exercise Tracker
- id: bd7158d8c443edefaeb5bd0f
title: File Metadata Microservice
-
id: bd7158d8c443edefaeb5bdef
title: Microsserviço de timestamp
-
id: bd7158d8c443edefaeb5bdff
title: Microsserviço conversor de requisição de cabeçalho
-
id: bd7158d8c443edefaeb5bd0e
title: Microsserviço redutor de URL
-
id: 5a8b073d06fa14fcfde687aa
title: Rastreador de exercícios
-
id: bd7158d8c443edefaeb5bd0f
title: Microsserviço de metadados de arquivos

View File

@ -6,16 +6,16 @@ isPrivate: true
tests:
-
id: bd7168d8c242eddfaeb5bd13
title: Visualize dados com um gráfico de barras
title: Visualizar dados com um gráfico de barras
-
id: bd7178d8c242eddfaeb5bd13
title: Visualize dados com um gráfico de dispersão
title: Visualizar dados com um gráfico de dispersão
-
id: bd7188d8c242eddfaeb5bd13
title: Visualize dados com um mapa de calor
title: Visualizar dados com um mapa de calor
-
id: 587d7fa6367417b2b2512bbf
title: Visualize dados com um mapa coroplético
title: Visualizar dados com um mapa coroplético
-
id: 587d7fa6367417b2b2512bc0
title: Visualize dados com um diagrama Treemap
title: Visualizar dados com um diagrama Treemap

View File

@ -1,15 +1,21 @@
---
id: 561acd10cb82ac38a17513bc
title: Front End Libraries Certificate
title: Certificado de desenvolvimento com bibliotecas de front-end
challengeType: 7
isPrivate: true
tests:
- id: bd7158d8c442eddfaeb5bd13
title: Build a Random Quote Machine
- id: bd7157d8c242eddfaeb5bd13
title: Build a Markdown Previewer
- id: 587d7dbc367417b2b2512bae
title: Build a Drum Machine
- id: bd7158d8c442eddfaeb5bd17
title: Build a JavaScript Calculator
- id: bd7158d8c442eddfaeb5bd0f
title: Build a 25 + 5 Clock
-
id: bd7158d8c442eddfaeb5bd13
title: Criar uma máquina de citação aleatória
-
id: bd7157d8c242eddfaeb5bd13
title: Criar um pré-visualizador de markdown
-
id: 587d7dbc367417b2b2512bae
title: Criar uma bateria eletrônica
-
id: bd7158d8c442eddfaeb5bd17
title: Criar uma calculadora JavaScript
-
id: bd7158d8c442eddfaeb5bd0f
title: Criar um Relógio 25 + 5

View File

@ -18,19 +18,19 @@ tests:
title: Camada de abstração de pesquisa de imagens
-
id: bd7158d8c443edefaeb5bd0f
title: Microserviço de metadados de arquivos
title: Microsserviço de metadados de arquivos
-
id: bd7158d8c443eddfaeb5bdef
title: Crie um aplicativo de votação
title: Criar um aplicativo de votação
-
id: bd7158d8c443eddfaeb5bdff
title: Crie um aplicativo de coordenação da vida noturna
title: Criar um aplicativo de coordenação da vida noturna
-
id: bd7158d8c443eddfaeb5bd0e
title: Faça um gráfico do mercado de ações
title: Fazer um gráfico do mercado de ações
-
id: bd7158d8c443eddfaeb5bd0f
title: Gerencie um clube de negociações de livros
title: Gerenciar um clube de negociações de livros
-
id: bd7158d8c443eddfaeb5bdee
title: Crie um clone do Pinterest
title: Criar um clone do Pinterest

View File

@ -6,31 +6,31 @@ isPrivate: true
tests:
-
id: bd7157d8c242eddfaeb5bd13
title: Crie um pré-visualizador de markdown
title: Criar um pré-visualizador de markdown
-
id: bd7156d8c242eddfaeb5bd13
title: Crie um painel de estatísticas dos campers
title: Criar um painel de estatísticas dos campers
-
id: bd7155d8c242eddfaeb5bd13
title: Crie uma caixa de receitas
title: Criar uma caixa de receitas
-
id: bd7154d8c242eddfaeb5bd13
title: Crie o Jogo da Vida
title: Criar o Jogo da Vida
-
id: bd7153d8c242eddfaeb5bd13
title: Crie um jogo de RPG do tipo Dungeon Crawler
title: Criar um jogo de RPG do tipo Dungeon Crawler
-
id: bd7168d8c242eddfaeb5bd13
title: Visualize dados com um gráfico de barras
title: Visualizar dados com um gráfico de barras
-
id: bd7178d8c242eddfaeb5bd13
title: Visualize dados com um gráfico de dispersão
title: Visualizar dados com um gráfico de dispersão
-
id: bd7188d8c242eddfaeb5bd13
title: Visualize dados com um mapa de calor
title: Visualizar dados com um mapa de calor
-
id: bd7198d8c242eddfaeb5bd13
title: Mostrar contiguidade nacional com um gráfico direcionado de força
-
id: bd7108d8c242eddfaeb5bd13
title: Mapeamento de dados através do mundo
title: Mapear dados através do mundo

View File

@ -6,31 +6,31 @@ isPrivate: true
tests:
-
id: bd7158d8c242eddfaeb5bd13
title: Crie uma página de portfólio pessoal
title: Criar uma página de portfólio pessoal
-
id: bd7158d8c442eddfaeb5bd13
title: Crie uma máquina de citação aleatória
title: Criar uma máquina de citação aleatória
-
id: bd7158d8c442eddfaeb5bd0f
title: Construa um relógio de 25 + 5
title: Criar um Relógio 25 + 5
-
id: bd7158d8c442eddfaeb5bd17
title: Crie uma calculadora JavaScript
title: Criar uma calculadora JavaScript
-
id: bd7158d8c442eddfaeb5bd10
title: Exibir o clima local
-
id: bd7158d8c442eddfaeb5bd1f
title: Use a API de JSON do TwitchTV
title: Usar a API de JSON do TwitchTV
-
id: bd7158d8c442eddfaeb5bd18
title: Estilize stories do Camper News
title: Estilizar stories do Camper News
-
id: bd7158d8c442eddfaeb5bd19
title: Crie um visualizador da Wikipédia
title: Criar um visualizador da Wikipédia
-
id: bd7158d8c442eedfaeb5bd1c
title: Crie um jogo da velha
title: Criar um jogo da velha
-
id: bd7158d8c442eddfaeb5bd1c
title: Crie um Genius
title: Criar um Genius

View File

@ -6,16 +6,16 @@ isPrivate: true
tests:
-
id: bd7158d8c442eddfaeb5bd18
title: Crie uma página de homenagem
title: Criar uma página de homenagem
-
id: 587d78af367417b2b2512b03
title: Crie um formulário de pesquisa
title: Criar um formulário de pesquisa
-
id: 587d78af367417b2b2512b04
title: Crie uma página inicial para um produto
title: Criar uma página inicial para um produto
-
id: 587d78b0367417b2b2512b05
title: Crie uma página de documentação técnica
title: Criar uma página de documentação técnica
-
id: bd7158d8c242eddfaeb5bd13
title: Crie uma página de portfólio pessoal
title: Criar uma página de portfólio pessoal

View File

@ -1,6 +1,6 @@
---
id: bad82fee1322bd9aedf08721
title: Diferenças entre unidades absolutas e relativas
title: Diferenciar entre unidades absolutas e relativas
challengeType: 0
videoUrl: 'https://scrimba.com/c/cN66JSL'
forumTopicId: 301089

View File

@ -11,7 +11,7 @@ dashedName: delete-html-elements
A tela do nosso telefone não possui muito espaço vertical.
Vamos remover os elementos desnecessário para podermos começar a construir nosso CatPhotoApp.
Vamos remover os elementos desnecessários para podermos começar a construir nosso CatPhotoApp.
# --instructions--

View File

@ -13,7 +13,7 @@ O HTML5 apresenta tags HTML mais descritivas. Essas tags incluem `main`, `header
Essas tags conferem uma estrutura descritiva ao seu HTML, tornam seu HTML mais fácil de ler e ajudam com a otimização dos mecanismos de busca (SEO) e com a acessibilidade. A tag `main` do HTML5 ajuda os mecanismos de busca e outros desenvolvedores a encontrar o conteúdo principal de sua página.
Vemos abaixo um exemplo de uso de um elemento `main` com dois elementos filhos dentre dele:
Vemos abaixo um exemplo de uso de um elemento `main` com dois elementos filhos dentro dele:
```html
<main>
@ -53,7 +53,7 @@ O elemento `p` deve conter as primeiras palavras do texto adicional `kitty ipsum
assert.isTrue(/Purr\s+jump\s+eat/gi.test($('p').text()));
```
O seu código deve ter um elemento `main`.
O código deve ter um elemento `main`.
```js
assert($('main').length === 1);

View File

@ -9,7 +9,7 @@ dashedName: say-hello-to-html-elements
# --description--
Bem-vindo aos desafios sobre HTML da freeCodeCamp. Eles guiarão você no aprendizado sobre desenvolvimento web.
Boas-vindas aos desafios de código em HTML do freeCodeCamp. Eles guiarão você no aprendizado sobre desenvolvimento web.
Em primeiro lugar, você construirá uma página simples usando HTML. Você poderá editar o código em seu editor, que se encontra incorporado a esta página.

View File

@ -2,7 +2,6 @@
id: 5a94fe0569fb03452672e45c
title: Dividir o grid em áreas
challengeType: 0
videoUrl: 'https://scrimba.com/p/pByETK/cLLpGAy'
forumTopicId: 301130
dashedName: divide-the-grid-into-an-area-template
---

View File

@ -43,7 +43,7 @@ assert.deepEqual(
);
```
Todos os elementos do primeiro array devem ser adicionados no segundo array em suas ordens originais.
Todos os elementos do primeiro array devem ser adicionados no segundo array em suas ordens originais. `frankenSplice([1, 2, 3, 4], [], 0)` deve retornar `[1, 2, 3, 4]`.
```js
assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4]);

View File

@ -1,6 +1,6 @@
---
id: 56533eb9ac21ba0edf2244df
title: Várias opções idênticas em instruções switch
title: Lidar com várias opções idênticas em instruções switch
challengeType: 1
videoUrl: 'https://scrimba.com/c/cdBKWCV'
forumTopicId: 18242

View File

@ -8,7 +8,7 @@ dashedName: iterate-over-all-properties
# --description--
Até agora você já viu dois tipos de propriedades: as propriedades <dfn>own properties</dfn> e `prototype`. Propriedades próprias (ou Own properties) são definidas diretamente na própria instância do objeto. E as propriedades `prototype` são definidas no `prototype`.
Até agora você já viu dois tipos de propriedades: as propriedades <dfn>own properties</dfn> e `prototype`. Propriedades próprias (ou Own properties) são definidas diretamente na própria instância do objeto. E as propriedades do protótipo são definidas em `prototype`.
```js
function Bird(name) {

View File

@ -29,7 +29,7 @@ Você deve ter o total de 6 elementos `button`.
assert($('button') && $('button').length > 5);
```
Todos os elementos `button` devem conter tag de fechamento.
Todos os elementos `button` devem ter tags de fechamento.
```js
assert(

View File

@ -12,7 +12,7 @@ dashedName: add-font-awesome-icons-to-all-of-our-buttons
# --description--
Font Awesome é uma biblioteca conveniente de ícones. Estes ícones podem ser fontes da web ou gráficos vetoriais. Estes ícones são tratados assim como as fontes. Você pode especificar seu tamanho utilizando pixels, e eles vão assumir o tamanho de fonte dos elementos pais do HTML.
Font Awesome é uma biblioteca conveniente de ícones. Estes ícones podem ser fontes da web ou gráficos vetoriais. Estes ícones são tratados assim como as fontes. Você pode especificar seu tamanho utilizando pixels, e eles irão assumir o tamanho de fonte de seus elementos HTML parentes.
# --instructions--

View File

@ -12,7 +12,7 @@ dashedName: add-font-awesome-icons-to-our-buttons
# --description--
Font Awesome é uma biblioteca conveniente de ícones. Estes ícones podem ser fontes da web ou gráficos vetoriais. Estes ícones são tratados assim como as fontes. Você pode especificar seu tamanho utilizando pixels, e eles vão assumir o tamanho de fonte dos elementos pais do HTML.
Font Awesome é uma biblioteca conveniente de ícones. Estes ícones podem ser fontes da web ou gráficos vetoriais. Estes ícones são tratados assim como as fontes. Você pode especificar seu tamanho utilizando pixels, e eles irão assumir o tamanho de fonte de seus elementos HTML parentes.
Você pode incluir o Font Awesome em qualquer aplicativo, adicionando o seguinte código ao topo do seu HTML:

View File

@ -8,11 +8,11 @@ dashedName: call-out-optional-actions-with-btn-info
# --description--
O Bootstrap vem com várias cores predefinidas para botões. A classe `btn-info` é usada para chamar atenção para ações opcionais que o usuário pode tomar.
O Bootstrap vem com diversas cores predefinidas para botões. A classe `btn-info` é usada para chamar atenção para ações opcionais que o usuário pode tomar.
Crie um novo botão do Bootstrap no nível de blocos abaixo do botão `Like` com o texto `Info`, e adicione as classes `btn-info` e `btn-block` do Bootstrap a ele.
Observe que esses botões ainda precisam das classes `btn` e `btn-block`.
Note que esses botões ainda precisam das classes `btn` e `btn-block`.
# --hints--
@ -34,7 +34,7 @@ O novo botão deve ter a classe `btn-info`.
assert($('button').hasClass('btn-info'));
```
Todos os seus elementos `button` deve ter tags de fechamento.
Todos os elementos `button` devem ter tags de fechamento.
```js
assert(

View File

@ -12,7 +12,7 @@ Nós também queremos ser capazes de usar jQuery para selecionar cada botão a p
Dê a cada um dos botões um id único, começando com `target1` e terminando com `target6`.
Certifique-se de que `target1` até `target3` estão em `#left-well`, e `target4` até `target6` estão em `#right well`.
Certifique-se de que `target1` até `target3` estão em `#left-well`, e `target4` até `target6` estão em `#right-well`.
# --hints--

View File

@ -12,7 +12,7 @@ O Bootstrap vem com diversas cores predefinidas para botões. A classe `btn-dang
Crie um botão com o texto `Delete` e dê a ele a classe `btn-danger`.
Observe que esses botões ainda precisam das classes `btn` e `btn-block`.
Note que esses botões ainda precisam das classes `btn` e `btn-block`.
# --hints--

View File

@ -12,7 +12,7 @@ dashedName: build-a-25--5-clock
Atenda às [especificações de usuário abaixo](https://en.wikipedia.org/wiki/User_story) e obtenha aprovação em todos os testes. Dê a ele o seu próprio estilo pessoal.
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery para completar este projeto. Você deve usar um framework de front-end (como React, por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e JQuery para completar este projeto. Você deve usar um framework de front-end (como React por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
**Especificação de usuário nº 1:** eu consigo ver um elemento com `id="break-label"` que contém uma string (por exemplo, "Duração do intervalo").

View File

@ -10,9 +10,9 @@ dashedName: build-a-drum-machine
**Objetivo:** Construa um app [CodePen.io](https://codepen.io) que seja funcionalmente semelhante a: <https://codepen.io/freeCodeCamp/full/MJyNMd>.
Atenda às [especificações de usuário](https://en.wikipedia.org/wiki/User_story) abaixo para passar em todos os testes. Dê a ele o seu próprio estilo pessoal.
Atenda às [especificações de usuário abaixo](https://en.wikipedia.org/wiki/User_story) e obtenha aprovação em todos os testes. Dê a ele o seu próprio estilo pessoal.
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery para completar este projeto. Você deve usar um framework de front-end (como React, por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e JQuery para completar este projeto. Você deve usar um framework de front-end (como React por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
**Especificação de usuário nº 1:** eu devo ser capaz de ver um contêiner externo com um `id="drum-machine"` correspondente que contém todos os outros elementos.
@ -28,9 +28,9 @@ Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, Reac
**Especificação de usuário nº 7:** quando um `.drum-pad` é acionado, uma string descrevendo o clipe de áudio associado é exibido como o texto interno do elemento `#display` (cada string precisa ser única).
Você pode fazer o seu projeto <a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>usando este modelo da CodePen</a> e clicando em `Save` para criar seu próprio pen. Como alternativa, use este link da nossa CDN para executar os testes em qualquer ambiente que você preferir: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Você pode construir seu projeto com <a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>usando este template CodePen</a> e clicando `Save` para criar seu próprio pen. Ou você pode usar esse link CDN para rodar os testes em qualquer ambiente que você goste:`https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Quando tiver terminado, envie o URL do seu projeto depois de ele haver passado em todos os testes.
Quando você terminar, envie a URL para o seu projeto em trabalho com todos os testes passando.
# --solutions--

View File

@ -12,7 +12,7 @@ dashedName: build-a-javascript-calculator
Atenda às [especificações de usuário abaixo](https://en.wikipedia.org/wiki/User_story) e obtenha aprovação em todos os testes. Dê a ele o seu próprio estilo pessoal.
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery para completar este projeto. Você deve usar um framework de front-end (como React, por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e JQuery para completar este projeto. Você deve usar um framework de front-end (como React por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
**Especificação de usuário nº 1:** minha calculadora deve conter um elemento clicável contendo um `=` (sinal de igualdade) com o `id="equals"` correspondente.
@ -38,7 +38,7 @@ Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, Reac
**Especificação de usuário nº 12:** eu devo ser capaz de executar qualquer operação (`+`, `-`, `*`, `/`) em números contendo pontos decimais.
**User Story #13:** Se 2 ou mais operadores forem inseridos consecutivamente, a operação executada deve ser o último operador inserido, excluindo o símbolo de negação (`-`). Por exemplo, se `5 + * 7 =` for inserido, o resultado deve ser `35` (ou seja, `5 * 7`); se `5 * - 5 =` for inserido, o resultado deve ser `-25` (ou seja, `5 * (-5)`).
**Especificação de usuário nº 13:** Se 2 ou mais operadores forem inseridos consecutivamente, a operação executada deve ser o último operador inserido, excluindo o símbolo de negação (`-`). Por exemplo, se `5 + * 7 =` for inserido, o resultado deve ser `35` (ou seja, `5 * 7`); se `5 * - 5 =` for inserido, o resultado deve ser `-25` (ou seja, `5 * (-5)`).
**Especificação de usuário nº 14:** pressionar um operador imediatamente após um `=` deve iniciar um novo cálculo que opera no resultado da avaliação anterior.

View File

@ -12,7 +12,7 @@ dashedName: build-a-markdown-previewer
Atenda às [especificações de usuário abaixo](https://en.wikipedia.org/wiki/User_story) e obtenha aprovação em todos os testes. Dê a ele o seu próprio estilo pessoal.
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery para completar este projeto. Você deve usar um framework de front-end (como React, por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e JQuery para completar este projeto. Você deve usar um framework de front-end (como React por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
**Especificação de usuário nº 1:** eu consigo ver um elemento `textarea` com o `id="editor"` correspondente.
@ -28,9 +28,9 @@ Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, Reac
**Bônus opcional (você não precisa de aprovação nesse teste):** meu pré-visualizador de marcação interpreta o retorno de carro e o renderiza como elementos `br` (quebra de linha).
Você pode fazer o seu projeto <a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>usando este modelo da CodePen</a> e clicando em `Save` para criar seu próprio pen. Como alternativa, use este link da nossa CDN para executar os testes em qualquer ambiente que você preferir: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Você pode construir seu projeto com <a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>usando este template CodePen</a> e clicando `Save` para criar seu próprio pen. Ou você pode usar esse link CDN para rodar os testes em qualquer ambiente que você goste:`https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Quando tiver terminado, envie o URL do seu projeto depois de ele haver passado em todos os testes.
Quando você terminar, envie a URL para o seu projeto em trabalho com todos os testes passando.
# --solutions--

View File

@ -12,7 +12,7 @@ dashedName: build-a-random-quote-machine
Atenda às [especificações de usuário abaixo](https://en.wikipedia.org/wiki/User_story) e obtenha aprovação em todos os testes. Dê a ele o seu próprio estilo pessoal.
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e jQuery para completar este projeto. Você deve usar um framework de front-end (como React, por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, React, Redux e JQuery para completar este projeto. Você deve usar um framework de front-end (como React por exemplo) porque essa seção trata de aprender frameworks de front-end. Tecnologias adicionais não listadas acima não são recomendadas e usá-las é por sua conta e risco. Estamos buscando apoiar outros frameworks de front-end, como Angular e Vue, mas eles não são atualmente suportados. Vamos aceitar e tentar corrigir todos os relatórios de problemas que usem o conjunto de tecnologias sugeridas para esse projeto. Boa programação!
**Especificação de usuário nº 1:** eu consigo ver um elemento wrapper com o `id="quote-box"` correspondente.
@ -36,9 +36,9 @@ Você pode usar qualquer mistura de HTML, JavaScript, CSS, Bootstrap, SASS, Reac
**Especificação de usuário nº 11:** o elemento wrapper `#quote-box` deve ser centralizado horizontalmente. Execute testes com o zoom do navegador em 100% e com a página maximizada.
Você pode fazer o seu projeto <a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>usando este modelo da CodePen</a> e, logo após, clicar em `Save` para criar seu próprio projeto. Como alternativa, use este link da nossa CDN para executar os testes em qualquer ambiente que você preferir: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Você pode construir seu projeto com <a href='https://codepen.io/pen?template=MJjpwO' target='_blank' rel='nofollow'>usando este template CodePen</a> e clicando `Save` para criar seu próprio pen. Ou você pode usar esse link CDN para rodar os testes em qualquer ambiente que você goste:`https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`
Quando tiver terminado, envie o URL do seu projeto depois de ele haver passado em todos os testes.
Quando você terminar, envie a URL para o seu projeto em trabalho com todos os testes passando.
**Observação:** o Twitter não permite que links sejam carregados em um iframe. Tente usar o atributo `target="_blank"` ou `target="_top"` no elemento `#tweet-quote` se o seu tweet não carregar. `target="_top"` vai substituir a aba atual para garantir que o seu trabalho foi salvo.

View File

@ -35,7 +35,7 @@ Você deve deixar o `$(document).ready(function() {` no início do seu elemento
assert(code.match(/\$\(document\)\.ready\(function\(\)\s?\{/g));
```
Você deve deixar intacto o fechamento `});` da função `document.ready`.
Você deve deixar intacto o fechamento `})` da função `document.ready`.
```js
assert(code.match(/.*\s*\}\);/g));

View File

@ -19,9 +19,9 @@ Primeiro, vamos ter como alvo seus elementos `div` com a classe `well` usando o
Observe que, assim como com declarações CSS, você digita um `.` antes do nome da classe.
Em seguida, use a função `.addClass()` do jQuery para adicionar as classes `animated<code> e <code>shake`.
Em seguida, use a função `.addClass()` do jQuery para adicionar as classes `animated` e `shake`.
Por exemplo, você poderia fazer todos os elementos com a classe `text-primary` sacudir adicionando o seguinte ao seu `$(document).ready(function() {`:
Por exemplo, você poderia fazer todos os elementos com a classe `text-primary` sacudir adicionando o seguinte à sua `document ready function`:
```js
$(".text-primary").addClass("animated shake");

View File

@ -17,7 +17,7 @@ Primeiro, vamos tomar como alvo seu elemento `button` com o id `target3` usando
Note que, assim como as declarações CSS, você digita um `#` antes do nome do id.
Em seguida use a função `.addClass` do jQuery para adicionar as classes `animated` e `fadeOut`.
Em seguida use a função `.addClass()` do jQuery para adicionar as classes `animated` e `fadeOut`.
Aqui está como você faria o elemento `button` com o id `target6` desaparecer:

View File

@ -13,7 +13,7 @@ dashedName: target-even-elements-using-jquery
Você também pode ter como alvo elementos baseados em suas posições usando os seletores `:odd` ou `:even`.
Note que jQuery é indexado a zero, o que significa que o primeiro elemento em uma seleção tem a posição 0. Isso pode ser um pouco confuso, pois, contra-intuitivamente, `:odd` seleciona o segundo elemento (position1), fourth element (position 3) e assim por diante.
Note que jQuery é indexado a zero, o que significa que o primeiro elemento em uma seleção tem a posição 0. Isso pode ser um pouco confuso, pois, contraintuitivamente, `:odd` seleciona o segundo elemento (position1), fourth element (position 3) e assim por diante.
Aqui está como você teria como alvo todos os elementos ímpares com a classe `target` e dar a eles as classes:

View File

@ -23,7 +23,7 @@ Por exemplo, vamos fazer todos os nossos elementos `button` quicar. Basta adicio
$("button").addClass("animated bounce");
```
Note que nós já incluímos ambas as bibliotecas jQuery e Animate.css por trás dos panos para que você possa utilizá-las no editor. Então você está usando jQuery para aplicar a classe `bounce` do Animate.css ao seus elementos `button`.
Note que nós já incluímos ambas as bibliotecas jQuery e Animate.css por trás dos panos para que você possa utilizá-las no editor. Então você está usando jQuery para aplicar a classe `bounce` do Animate.css ao seus elementos `button`.
# --hints--
@ -39,7 +39,7 @@ Você deve usar apenas jQuery para adicionar essas classes ao elemento.
assert(!code.match(/class.*animated/g));
```
Seu código jQuery deve estar dentro da função `$(document).ready()`.
Seu código jQuery deve estar dentro da função `$(document).ready();`.
```js
assert(

View File

@ -18,7 +18,7 @@ O editor de código tem todo o código que você escreveu nesta seção até ago
# --hints--
O `AppWrapper` deve ser renderizardo na página.
O `AppWrapper` deve ser renderizado na página.
```js
assert(
@ -40,7 +40,7 @@ assert(
);
```
O componente `Presentational` deve renderizar os elementos `h2`, `input`, `button`, e `ul`.
O componente `Presentational` deve renderizar os elementos `h2`, `input`, `button` e `ul`.
```js
assert(

View File

@ -20,7 +20,7 @@ Finalmente, use o `ul` para mapear em cima do array `messages` e o renderize na
# --hints--
O componente `DisplayMessages` deve inicializar com o estado igual a `{ input: "", messages: []}`.
O componente `DisplayMessages` deve inicializar com o estado igual a `{ input: "", messages: [] }`.
```js
assert(

View File

@ -1,6 +1,6 @@
---
id: 5a24c314108439a4d4036182
title: Adicione estilos em linha no React
title: Adicionar estilos em linha no React
challengeType: 6
forumTopicId: 301378
dashedName: add-inline-styles-in-react
@ -8,7 +8,7 @@ dashedName: add-inline-styles-in-react
# --description--
Você pode ter percebido no último desafio que existem diversas outras diferenças de sintaxe de estilos HTML em linha em adição ao atributo `style` definido para um objeto JavaScript. Primeiro, os nomes de certas propriedades de estilo CSS usam camel case. Por exemplo, o último desafio definiu o tamanho da fonte com `fontSize` ao invés de `font-size`. Palavras com hifens como `font-size` são sintaxes inválidas para propriedades de objeto JavaScript, então React usa camel case. Como regra, qualquer propriedades de estilos com hífen são escritas usando camel case em JSX.
Você pode ter percebido no último desafio que existem diversas outras diferenças de sintaxe de estilos HTML em linha em adição ao atributo `style` definido para um objeto JavaScript. Primeiro, os nomes de certas propriedades de estilo CSS usam camel case. Por exemplo, o último desafio definiu o tamanho da fonte com `fontSize` ao invés de `font-size`. Palavras com hifens como `font-size` são sintaxes inválidas para propriedades de objeto JavaScript, então React usa camel case. Como regra, qualquer propriedades de estilos com hífen são escritas usando camel case em JSX.
Todas as unidades de valor de comprimento das propriedades (como `height`,`width`, e `fontSize`) são assumidos para estar em `px` a não ser que seja especificado outra forma. Se você quiser usar `em`, por exemplo, você envolve o valor e as unidades em aspas, como `{fontSize: "4em"}`. Além dos valores de comprimento que tem como padrão `px`, todas os outros valores de propriedade devem estar entre aspas.
@ -30,7 +30,7 @@ A variável `styles` devem ter a propriedade `color` definida com o valor `purpl
assert(styles.color === 'purple');
```
A variável `styles` devem ter a propriedade `fontSize` definida com o valor `40`.
A variável `styles` deve ter a propriedade `fontSize` definida com o valor `40`.
```js
assert(styles.fontSize === 40);

View File

@ -24,7 +24,7 @@ Assim que você completar os passos acima você deve ser capaz de clicar o botã
# --hints--
`MyComponent` deve retornar um elemento `div` o qual envolve dois elementos, os elementos `button` e `h1`, nessa ordem.
`MyComponent` deve retornar um elemento `div` o qual envolve dois elementos, os elementos button e `h1`, nessa ordem.
```js
assert(

View File

@ -10,7 +10,7 @@ dashedName: change-inline-css-conditionally-based-on-component-state
Nesse ponto, você já viu diversas aplicações de renderização condicional e o uso de estilos em linha. Aqui está mais um exemplo que combina ambos esses tópicos. Você também pode renderizar CSS condicionalmente baseado no estado de um componente React. Para fazer isso, você verifica por uma condição, e se essa condição for atendida, você modifica o objeto styles que foi atribuído aos elementos do JSX no método de renderização.
É importante entender esse paradigma porque é uma mudança dramática da abordagem mais tradicional de aplicar estilos ao modificar diretamente os elementos DOM (o que é muito comum com jQuery, por exemplo). Nessa abordagem, você precisa monitorar quando um elemento mudar e também lidar com a manipulação diretamente. Pode se tornar difícil acompanhar as mudanças, tornando a interface de usuário potencialmente imprevisível. Quando você define um objeto estilo baseado em uma condição, você descreve como a interface deve se parecer com uma função do estado da aplicação. Há um fluxo claro de informação que só avança em uma direção. Esse é o método preferido ao escrever aplicações com React.
É importante entender esse paradigma porque é uma mudança dramática da abordagem mais tradicional de aplicar estilos ao modificar diretamente os elementos DOM (o que é muito comum com jQuery, por exemplo). Nessa abordagem, você precisa monitorar quando um elemento mudar e também lidar com a manipulação diretamente. Pode se tornar difícil acompanhar as mudanças, tornando a interface de usuário potencialmente imprevisível. Quando você define um objeto estilo baseado em uma condição, você descreve como a interface deve se parecer com uma função do estado da aplicação. Há um fluxo claro de informação que só avança em uma direção. Esse é o método preferido ao escrever aplicações com React.
# --instructions--

View File

@ -29,7 +29,7 @@ assert(
);
```
O componente `TypesOfFood` deve retornar o component `Fruits`.
O componente `TypesOfFood` deve retornar o componente `Fruits`.
```js
assert(
@ -55,7 +55,7 @@ assert(
);
```
O componente `Fruits` deve retornar o componente `Vegetables` abaixo do componente `Fruits`.
O componente `TypesOfFood` deve retornar o componente `Vegetables` abaixo do componente `Fruits`.
```js
assert(

View File

@ -52,7 +52,7 @@ A constante `JSX` deve retornar um elemento `div`.
assert(JSX.type === 'div');
```
O `div` deve conter uma tag `h1` como o primeiro elemento.
A `div` deve conter uma tag `h1` como o primeiro elemento.
```js
assert(JSX.props.children[0].type === 'h1');
@ -64,7 +64,7 @@ A `div` deve conter uma tag `p` como o segundo elemento.
assert(JSX.props.children[1].type === 'p');
```
O `div` deve conter uma tag `ul` como o terceiro elemento.
A `div` deve conter uma tag `ul` como o terceiro elemento.
```js
assert(JSX.props.children[2].type === 'ul');

View File

@ -12,7 +12,7 @@ O React é uma biblioteca de visualização de código aberto criada e mantida p
React usa a sintaxe de extensão do JavaScript chamada JSX que o permite escrever HTML diretamente no JavaScript. Isso possui diversos benefícios. Ela permite a você usar todo o poder programático do JavaScript dentro do HTML, e ajuda a manter o seu código legível. Em grande parte, JSX é semelhante ao HTML que você já aprendeu, no entanto existem algumas diferenças chaves que cobriremos durante esses desafios.
Por exemplo, porque o JSX é uma extensão sintática de JavaScript, você realmente pode escrever JavaScript diretamente dentro do JSX. Para isso, você simplesmente inclui o código que você quer que seja tratado como JavaScript dentro de chaves: `{'this is treated as JavaScript code'}`. Mantenha isso em mente, já que é utilizado em diversos desafios futuros.
Por exemplo, porque o JSX é uma extensão sintática de JavaScript, você realmente pode escrever JavaScript diretamente dentro do JSX. Para isso, você simplesmente inclui o código que você quer que seja tratado como JavaScript dentro de chaves: `{ 'this is treated as JavaScript code' }`. Mantenha isso em mente, já que é utilizado em diversos desafios futuros.
No entanto, porque JSX não é JavaScript válido, código JSX precisa ser compilado em JavaScript. O transpilador Babel é uma ferramenta popular para esse processo. Para sua conveniência, já está adicionado por trás dos panos para esses desafios. Se por acaso você escrever JSX inválido sintaticamente, você verá o primeiro teste nesses desafios falhar.

View File

@ -10,7 +10,7 @@ dashedName: create-a-stateful-component
Um dos tópicos mais importantes em React é `state`. State consiste em qualquer dado que sua aplicação precisar saber, que pode ser alterado durante o tempo. Você quer que seus aplicativos respondam a mudanças de estado e apresentem uma interface atualizada quando necessário. React oferece uma boa solução para o gerenciamento de estados de aplicações web modernas.
Você pode criar um estado em um componente React ao declarar a propriedade `state` na classe do componente no seu `constructor`. Isso inicializa o componente com `state` quando é criado. A propriedade `state` deve ser definida para um `objeto` JavaScript. Declarando, ele se parece com isso:
Você pode criar um estado em um componente React ao declarar a propriedade `state` na classe do componente no seu `constructor`. Isso inicializa o componente com `state` quando é criado. A propriedade `state` deve ser definida para um `object` JavaScript. Declarando, ele se parece com isso:
```jsx
this.state = {

View File

@ -1,6 +1,6 @@
---
id: 5a24c314108439a4d4036181
title: Introducing Inline Styles
title: Introduzir estilos em linha
challengeType: 6
forumTopicId: 301395
dashedName: introducing-inline-styles
@ -8,33 +8,32 @@ dashedName: introducing-inline-styles
# --description--
There are other complex concepts that add powerful capabilities to your React code. But you may be wondering about the more simple problem of how to style those JSX elements you create in React. You likely know that it won't be exactly the same as working with HTML because of [the way you apply classes to JSX elements](/learn/front-end-development-libraries/react/define-an-html-class-in-jsx).
Existem outros conceitos complexos que adicionam recursos poderosos ao seu código React. Mas você pode estar se perguntando sobre o problema mais simples de como estilizar esses elementos JSX que você cria em React. Você provavelmente sabe que não será exatamente o mesmo que trabalhar com HTML por causa [da forma como aplica classes aos elementos JSX](/learn/front-end-development-libraries/react/define-an-html-class-in-jsx).
If you import styles from a stylesheet, it isn't much different at all. You apply a class to your JSX element using the `className` attribute, and apply styles to the class in your stylesheet. Another option is to apply inline styles, which are very common in ReactJS development.
Se você importar estilos de uma folha de estilos, não é muito diferente. Você aplica uma classe ao seu elemento JSX usando o atributo `className` e aplica estilos à classe em sua folha de estilos. Outra opção é aplicar estilos em linha, que são muito comuns no desenvolvimento de ReactJS.
You apply inline styles to JSX elements similar to how you do it in HTML, but with a few JSX differences. Here's an example of an inline style in HTML:
Você aplica estilos em linha em elementos JSX similares a como você faz isso em HTML, mas com algumas diferenças em JSX. Aqui está um exemplo de estilo integrado em HTML:
```jsx
<div style="color: yellow; font-size: 16px">Mellow Yellow</div>
```
JSX elements use the `style` attribute, but because of the way JSX is transpiled, you can't set the value to a `string`. Instead, you set it equal to a JavaScript `object`. Here's an example:
Elementos JSX usam o atributo `style`, mas por causa da forma como o JSX é transpilado, você não pode definir o valor para uma `string`. Em vez disso, você o definiu para ser igual a um `object` em JavaScript. Exemplo:
```jsx
<div style={{color: "yellow", fontSize: 16}}>Mellow Yellow</div>
```
Notice how we camelCase the `fontSize` property? This is because React will not accept kebab-case keys in the style object. React will apply the correct property name for us in the HTML.
Percebeu como colocamos em camelCase a propriedade `fontSize`? Isso é porque o React não aceitará chaves hifenizadas (em kebab-case) no objeto de estilo. React aplicará o nome de propriedade correto para nós no HTML.
# --instructions--
Add a `style` attribute to the `div` in the code editor to give the text a color of red and font size of `72px`.
Note that you can optionally set the font size to be a number, omitting the units `px`, or write it as `72px`.
Adicione um atributo `style` para o `div` no editor de código para dar ao texto a cor vermelha e tamanho da fonte de `72px`.
Note que você pode opcionalmente definir o tamanho da fonte como um número. omitindo as unidades `px`, ou escreva-o como `72px`.
# --hints--
The component should render a `div` element.
O componente deve renderizar um elemento `div`.
```js
assert(
@ -45,7 +44,7 @@ assert(
);
```
The `div` element should have a color of `red`.
O elemento `div` deve ter a cor `red`.
```js
assert(
@ -56,7 +55,7 @@ assert(
);
```
The `div` element should have a font size of `72px`.
O elemento `div` deve ter um tamanho de fonte de `72px`.
```js
assert(

View File

@ -10,7 +10,7 @@ dashedName: optimize-re-renders-with-shouldcomponentupdate
Até agora, se qualquer componente recebe um novo `state` ou novas `props`, ele se renderiza novamente com todos os seus filhos. Normalmente isto está ok. Mas React fornece um método de ciclo de vida que você pode chamar quando componentes filhos recebem um novo `state` ou `props`, e declarar especificamente se os componentes devem atualizar ou não. O método é `shouldComponentUpdate()`, e leva `nextProps` e `nextState` como parâmetros.
Esse método é uma maneira útil de otimizar o desempenho. Por exemplo, o comportamento padrão é que seu componente renderiza novamente quando recebe novas `props`, mesmo que as `props` não tenham mudado. Você pode usar `shouldComponentUpdate()` para evitar isso comparando as `props`. O método deve retornar um valor `booleano` que indica ao React se deve ou não atualizar o componente. Você pode comparar os "props" atuais (`this.props`) para os próximos props (`nextProps`) para determinar se você precisa atualizar ou não, e retorne `true` ou `false` de acordo.
Esse método é uma maneira útil de otimizar o desempenho. Por exemplo, o comportamento padrão é que seu componente renderiza novamente quando recebe novas `props`, mesmo que as `props` não tenham mudado. Você pode usar `shouldComponentUpdate()` para evitar isso comparando as `props`. O método deve retornar um valor `boolean` que indica ao React se deve ou não atualizar o componente. Você pode comparar os "props" atuais (`this.props`) para os próximos props (`nextProps`) para determinar se você precisa atualizar ou não, e retorne `true` ou `false` de acordo.
# --instructions--
@ -45,7 +45,7 @@ assert(
);
```
O componente </code>OnlyEvens` deve retornar uma tag <code>h1` que renderiza o valor de `this.props.value`.
O componente `OnlyEvens` deve retornar uma tag `h1` que renderiza o valor de `this.props.value`.
```js
(() => {

View File

@ -22,7 +22,7 @@ Você usa **atributos HTML personalizados** criados por você e suportados por R
const Welcome = (props) => <h1>Hello, {props.user}!</h1>
```
É padrão chamar esse valor `"props"` e, quando lidar com componentes funcionais sem estado, você basicamente considera isso como um argumento para uma função que retorna JSX. Você pode acessar o valor do argumento no corpo da função. Com componentes de classe, você verá que isto é um pouco diferente.
É padrão chamar esse valor `props` e, quando lidar com componentes funcionais sem estado, você basicamente considera isso como um argumento para uma função que retorna JSX. Você pode acessar o valor do argumento no corpo da função. Com componentes de classe, você verá que isto é um pouco diferente.
# --instructions--

View File

@ -16,7 +16,7 @@ Componentes do React são passados a `ReactDOM.render()` um pouco diferente dos
# --instructions--
Os componentes `Fruits` e `Vegetables` são definidos para você nos bastidores. Renderize ambos os componentes como filhos do componente `TypesOfFood` e, em seguida, renderize `TypesOfFood` para o DOM. Há uma `div` com `id='challenge-node'` disponível para você usar.
Os componentes `Fruits` e `Vegetables` são definidos para você nos bastidores. Renderize ambos os componentes como filhos do componente `TypesOfFood` e, em seguida, renderize `TypesOfFood` para o DOM. Há um `div` com `id='challenge-node'` disponível para você usar.
# --hints--

View File

@ -8,7 +8,7 @@ dashedName: render-conditionally-from-props
# --description--
Até agora, você viu como usar o `if/else`, `&&`, e o operador ternário (`condition ? expressionIfTrue : expressionIfFalse`) para tomar decisões condicionais sobre o que renderizar e quando. No entanto, resta um tópico importante para discutir que permite que você combine todos esses conceitos com outro poderoso recurso React: props. Usar props para renderizar código condicionalmente é muito comum entre desenvolvedores React — isto é, eles usam o valor de uma determinada propriedade para tomar decisões automaticamente sobre o que renderizar.
Até agora, você viu como usar a condição `if/else`, `&&` e o operador ternário (`condition ? expressionIfTrue : expressionIfFalse`) para tomar decisões condicionais sobre o que renderizar e quando. No entanto, resta um tópico importante para discutir que permite que você combine todos esses conceitos com outro poderoso recurso React: props. Usar props para renderizar código condicionalmente é muito comum entre desenvolvedores React — isto é, eles usam o valor de uma determinada propriedade para tomar decisões automaticamente sobre o que renderizar.
Neste desafio, você vai configurar um componente filho para tomar decisões de renderização com base em props. Você também usará o operador ternário, mas você pode ver como vários dos outros conceitos que foram abordados nos últimos desafios poderão ser igualmente úteis neste contexto.

View File

@ -16,7 +16,7 @@ Como você esperaria, `ReactDOM.render()` deve ser chamado após as declaraçõe
# --instructions--
O editor de código tem um componente JSX simples. Use o método `ReactDOM.render()` para renderizar este componente na página. Você pode passar elementos JSX definidos diretamente como o primeiro argumento e usar `document.getElementById()` para selecionar o nó do DOM onde renderizá-los. Há uma `div` com `id='challenge-node'` disponível para você usar. Certifique-se de não alterar a constante `JSX`.
O editor de código tem um componente JSX simples. Use o método `ReactDOM.render()` para renderizar este componente na página. Você pode passar elementos JSX definidos diretamente como o primeiro argumento e usar `document.getElementById()` para selecionar o nó do DOM onde renderizá-los. Há um `div` com `id='challenge-node'` disponível para você usar. Certifique-se de não alterar a constante `JSX`.
# --hints--

View File

@ -1,6 +1,6 @@
---
id: 5a24c314108439a4d4036185
title: Use && para uma forma mais concisa do condicional
title: Use && for a More Concise Conditional
challengeType: 6
forumTopicId: 301413
dashedName: use--for-a-more-concise-conditional

View File

@ -22,15 +22,16 @@ Uma vez que o componente está renderizando informações na página, os usuári
# --hints--
O componente `CheckUserAge` deve renderizar com um único elemento `input` e um único elemento</code>button`.</p>
O componente `CheckUserAge` deve renderizar com um único elemento `input` e um único elemento`button`.
<pre><code class="js">assert(
```js
assert(
Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('input')
.length === 1 &&
Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('button')
.length === 1
);
`</pre>
```
O state do componente `CheckUserAge` deve ser inicializado com uma propriedade de `userAge` e uma propriedade `input`, ambos definidos com o valor de uma string vazia.

View File

@ -42,7 +42,7 @@ assert(
);
```
O componente `TypesOfFood` deve retornar os elementos `h2` e `ul`.
O componente `TypesOfFruit` deve retornar os elementos `h2` e `ul`.
```js
assert(

View File

@ -36,7 +36,7 @@ Observe que você tem que envolver o objeto literalmente entre parênteses, caso
# --instructions--
`MyComponent` tem uma propriedade `visibilty` que foi inicializada como `false`. O método de renderização retorna uma view se o valor de `visibility` for verdadeiro e uma view diferente se for falsa.
`MyComponent` tem uma propriedade `visibility` que foi inicializada como `false`. O método de renderização retorna uma view se o valor de `visibility` for verdadeiro e uma view diferente se for falsa.
Atualmente, não há forma de atualizar a propriedade `visibility` no `state` do componente. O valor deve alternar entre verdadeiro e falso. Há um manipulador de cliques no botão que aciona um método de classe chamado `toggleVisibility()`. Passe uma função para `setState` para definir esse método para que o `state` de `visibility` alterne para o valor oposto quando o método for chamado. Se `visibility` for `false`, o método define para `true`, e vice-versa.

View File

@ -40,7 +40,7 @@ assert(
);
```
`MyComponent` deve existir e ser rendizado no DOM.
`MyComponent` deve existir e ser renderizado no DOM.
```js
assert(document.getElementById('challenge-node').childNodes.length === 1);

View File

@ -8,7 +8,7 @@ dashedName: copy-an-object-with-object-assign
# --description--
Os últimos desafios funcionaram com arrays, mas também existem maneiras de ajudar a impor a imutabilidade do state quando o state for um `object`. Uma ferramenta útil para lidar com objetos é o `Object.assign()`. `Object.assign()` recebe um objeto alvo e objetos fonte e mapeia propriedades dos objetos de origem para o objeto alvo. Qualquer propriedades correspondentes são substituídas por propriedades nos objetos de origem. Esse comportamento é comumente usado para fazer cópias rasas de objetos, passando um objeto vazio como o primeiro argumento seguido do(s) objeto(s) que você deseja copiar. Exemplo:
Os últimos desafios funcionaram com arrays, mas também existem maneiras de ajudar a impor a imutabilidade do state quando o state for um `object`. Uma ferramenta útil para lidar com objetos é a utilidade do `Object.assign()`. `Object.assign()` recebe um objeto alvo e objetos fonte e mapeia propriedades dos objetos de origem para o objeto alvo. Qualquer propriedades correspondentes são substituídas por propriedades nos objetos de origem. Esse comportamento é comumente usado para fazer cópias rasas de objetos, passando um objeto vazio como o primeiro argumento seguido do(s) objeto(s) que você deseja copiar. Exemplo:
```js
const newObject = Object.assign({}, obj1, obj2);

View File

@ -29,7 +29,7 @@ Chamando a função `loginAction` deve retornar um objeto com a propriedade `typ
assert(loginAction().type === 'LOGIN');
```
A store deve ser inicializada com um objeto com a propriedade `login` definido como `false`.
A store deve ser inicializada com um objeto com a propriedade `login` definida como `false`.
```js
assert(store.getState().login === false);

View File

@ -18,7 +18,7 @@ O editor de código tem o exemplo anterior, bem como o início de uma função `
# --hints--
Chamar a função `loginAction` deve retornar um objeto com a propriedade `type` definida para a string `LOGIN`.
Chamar a função `loginAction` deve retornar um objeto com a propriedade type definida para a string `LOGIN`.
```js
assert(loginAction().type === 'LOGIN');

View File

@ -12,9 +12,9 @@ Até agora você aprendeu como enviar ações para a store do Redux, mas até ag
# --instructions--
Há dois criadores de ações básicos, `notesReducer()` e um `addNoteText()`, definidos no editor de código. Finalize o corpo da função `addNodeText()` para que ela retorne um objeto `action`. O objeto deve incluir a propriedade `type` com o valor `ADD_NOTE` e também uma propriedade `text` definida para o dado `note` que foi passado ao criador de ação. Quando você chama o criador de ação, você passará uma informação note específica que você pode acessar para o objeto.
Há dois criadores de ações básicos, `notesReducer()` e um `addNoteText()`, definidos no editor de código. Finalize o corpo da função `addNoteText()` para que ela retorne um objeto `action`. O objeto deve incluir a propriedade `type` com o valor `ADD_NOTE` e também uma propriedade `text` definida para o dado `note` que foi passado ao criador de ação. Quando você chama o criador de ação, você passará uma informação note específica que você pode acessar para o objeto.
Em seguida, termine de escreve a instrução `switch` no `notesReducer()`. Você precisa adicionar um caso que lide com ações do `addNodeText()`. Esse caso deve ser acionado sempre que há uma ação do tipo `ADD_NOTE` e ele deve retornar a propriedade `text` na `action` chegando como o novo `state`.
Em seguida, termine de escreve a instrução `switch` no `notesReducer()`. Você precisa adicionar um caso que lide com ações do `addNoteText()`. Esse caso deve ser acionado sempre que há uma ação do tipo `ADD_NOTE` e ele deve retornar a propriedade `text` na `action` chegando como o novo `state`.
A ação é despachada no final do código. Quando terminar, rode o código e olhe o console. Isso é tudo que é necessário para enviar dados específicos de ações ao store e o usar quando você atualizar o `state` do store.
@ -31,7 +31,7 @@ assert(
);
```
Despachar uma ação do tipo `ADD_NOTE` com o criador de ação `addNodeText` deve atualizar o `state` para a string passada para o criador da ação.
Despachar uma ação do tipo `ADD_NOTE` com o criador de ação `addNoteText` deve atualizar o `state` para a string passada para o criador da ação.
```js
assert(

View File

@ -18,13 +18,13 @@ O editor de código tem uma store, actions e criadores de actions configurados p
# --hints--
Chamar a função `loginUser` deve retornar um objeto com a propriedade `type` definida para a string `LOGIN`.
Chamar a função `loginUser` deve retornar um objeto com a propriedade type definida para a string `LOGIN`.
```js
assert(loginUser().type === 'LOGIN');
```
Chamar a função `logoutUser` deve retornar um objeto com a propriedade `type` definida para a string `LOGOUT`.
Chamar a função `logoutUser` deve retornar um objeto com a propriedade type definida para a string `LOGOUT`.
```js
assert(logoutUser().type === 'LOGOUT');

View File

@ -67,7 +67,7 @@ assert(
);
```
A função `authReducer` deve lidar com vários tipos de ação com um comando `switch`.
A função `authReducer` deve lidar com vários tipos de ação com um comando switch.
```js
(getUserInput) =>

View File

@ -28,7 +28,7 @@ O criador de ação `requestingData` deve retornar um objeto de tipo igual ao va
assert(requestingData().type === REQUESTING_DATA);
```
O criador de ação `receivedData` deve retornar um objeto de tipo igual ao valor de `REQUESTING_DATA`.
O criador de ação `receivedData` deve retornar um objeto de tipo igual ao valor de `RECEIVED_DATA`.
```js
assert(receivedData('data').type === RECEIVED_DATA);

View File

@ -8,7 +8,7 @@ dashedName: extend-one-set-of-css-styles-to-another-element
# --description--
Sass tem um recurso chamado `extend` que faz com que seja fácil pegar emprestado as regras CSS de um elemento e construr a partir delas em outro.
Sass tem um recurso chamado `extend` que faz com que seja fácil pegar emprestado as regras CSS de um elemento e construir a partir delas em outro.
Por exemplo, o bloco abaixo de regras CSS estiliza uma classe `.panel`. Tem um `background-color`, um `height` e um `border`.

View File

@ -16,6 +16,48 @@ Crie um aplicativo full stack em JavaScript que seja funcionalmente semelhante a
Quando terminar, certifique-se de que uma demonstração funcional do seu projeto está hospedada em algum lugar público. Em seguida, envie o URL para ela no campo `Solution Link`. Como opção, envie também um link para o código-fonte do projeto no campo `GitHub Link`.
# --instructions--
Suas respostas devem ter as seguintes estruturas.
Exercício:
```js
{
username: "fcc_test"
description: "test",
duration: 60,
date: "Mon Jan 01 1990",
_id: "5fb5853f734231456ccb3b05"
}
```
Usuário:
```js
{
username: "fcc_test",
_id: "5fb5853f734231456ccb3b05"
}
```
Log:
```js
{
username: "fcc_test",
count: 1,
_id: "5fd01a41c5b5cf05d080502f",
log: [{
description: "test",
duration: 60,
date: "Mon Jan 01 1990",
}]
}
```
**Dica:** para a propriedade `date`, o método `toDateString` da API `Date` pode ser usado para conseguir o resultado esperado.
# --hints--
Você deve fornecer seu próprio projeto, não o exemplo de URL.

View File

@ -88,7 +88,7 @@ async (getUserInput) => {
};
```
Se você passar um URL inválido que não siga o formato válido `http://www.example.com` , a resposta em JSON conterá `{ error: 'invalid url' }`
Se você passar um URL inválido que não siga o formato válido `http://www.example.com`, a resposta em JSON conterá `{ error: 'invalid url' }`
```js
async (getUserInput) => {

View File

@ -28,7 +28,7 @@ Adicione a versão "2.14.0" do pacote "moment" ao campo `dependencies` do seu ar
# --hints--
"dependencies" deve incluir o "moment"
As "dependencies" devem incluir o "moment"
```js
(getUserInput) =>

View File

@ -10,29 +10,37 @@ dashedName: run-functional-tests-on-an-api-response-using-chai-http-iii---put-me
Lembrando que este projeto está sendo construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
No próximo exemplo, veremos como enviar dados em uma payload de solicitação (corpo). Vamos testar uma solicitação de PUT. O endpoint `'/travellers'` aceita um objeto JSON que tem essa estrutura:
Ao testar uma solicitação de `PUT`, você geralmente envia dados com ela. Os dados que você inclui com sua solicitação de `PUT` são chamados de corpo (body) da solicitação.
Para enviar uma solicitação de `PUT` e um objeto JSON para o endpoint `'/travellers'`, você pode usar os métodos `put` e `send` do plugin `chai-http`:
```js
chai
.request(server)
.put('/travellers')
.send({
"surname": [last name of a traveller of the past]
})
...
```
A rota responderá com:
```json
{
"surname": [last name of a traveller of the past]
"name": [first name],
"surname": [last name],
"dates": [birth - death years]
}
```
A rota responde com:
```json
{
"name": [first name], "surname": [last name], "dates": [birth - death years]
}
```
Veja o código do servidor para mais detalhes.
Consulte o código do servidor para ver as diferentes respostas para o endpoint `'/travellers'`.
# --instructions--
Dentro de `tests/2_functional-tests.js`, altere o teste `'send {surname: "Colombo"}'` test (`// #3`):
Em `tests/2_functional-tests.js`, altere o teste `'Send {surname: "Colombo"}'` (`// #3`) e use os métodos `put` e `send` para testar o endpoint `'/travellers'`.
Enviar a seguinte resposta JSON como payload:
Envie o objeto JSON a seguir com a sua solicitação de PUT:
```json
{
@ -40,14 +48,14 @@ Enviar a seguinte resposta JSON como payload:
}
```
Verifique o seguinte, dentro da função de callback de `request.end`:
Verifique o seguinte dentro da função de callback de `request.end`:
1. `status`
2. `type`
3. `body.name`
4. `body.surname`
1. O `status` deve ser `200`
2. O `type` deve ser `application/json`
3. O `body.name` deve ser `Cristoforo`
4. O `body.surname` deve ser `Colombo`
Siga a ordem de declarações acima, pois dependemos disso. Não se esqueça de remover `assert.fail()` assim que o teste terminar.
Siga a ordem de declarações acima, pois dependemos disso. Além disso, não se esqueça de remover `assert.fail()` assim que o teste terminar.
# --hints--
@ -65,7 +73,7 @@ Todos os testes devem passar.
);
```
Você deve testar se 'res.status' será 200.
Você deve testar se `res.status` será 200.
```js
(getUserInput) =>
@ -81,7 +89,7 @@ Você deve testar se 'res.status' será 200.
);
```
Você deve testar se 'res.type' será 'application/json'.
Você deve testar se `res.type` será `'application/json'`.
```js
(getUserInput) =>
@ -97,7 +105,7 @@ Você deve testar se 'res.type' será 'application/json'.
);
```
Você deve testar se 'res.body.name' será 'Cristoforo'.
Você deve testar se `res.body.name` será `'Cristoforo'`.
```js
(getUserInput) =>
@ -113,7 +121,7 @@ Você deve testar se 'res.body.name' será 'Cristoforo'.
);
```
Você deve testar se 'res.body.surname' será 'Colombo'.
Você deve testar se `res.body.surname` será `'Colombo'`.
```js
(getUserInput) =>

View File

@ -8,15 +8,17 @@ dashedName: run-functional-tests-on-an-api-response-using-chai-http-iv---put-met
# --description--
Lembrando que este projeto está sendo construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). Este exercício é semelhante ao anterior. Vejamos mais detalhes aqui.
Lembrando que este projeto está sendo construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
Agora que vimos como é feito, é a sua vez de fazer do zero.
Este exercício é semelhante ao anterior.
Agora que você sabe como testar uma solicitação de `PUT`, é sua vez de fazer isso do zero.
# --instructions--
Dentro de `tests/2_functional-tests.js`, altere o teste `'send {surname: "da Verrazzano"}'` test (`// #4`):
Em `tests/2_functional-tests.js`, altere o teste `'Send {surname: "da Verrazzano"}'` (`// #4`) e use os métodos `put` e `send` para testar o endpoint `'/travellers'`.
Envie a resposta em JSON a seguir como payload para a rota `/travellers`:
Envie o objeto JSON a seguir com a sua solicitação de PUT:
```json
{
@ -24,14 +26,14 @@ Envie a resposta em JSON a seguir como payload para a rota `/travellers`:
}
```
Verifique o seguinte, dentro de uma função de callback de `request.end`:
Verifique o seguinte dentro da função de callback de `request.end`:
1. `status`
2. `type`
3. `body.name`
4. `body.surname`
1. O `status` deve ser `200`
2. O `type` deve ser `application/json`
3. O `body.name` deve ser `Giovanni`
4. O `body.surname` deve ser `da Verrazzano`
Siga a ordem de declarações acima, pois dependemos disso. Não se esqueça de remover `assert.fail()` assim que o teste terminar.
Siga a ordem de declarações acima, pois dependemos disso. Além disso, não se esqueça de remover `assert.fail()` assim que o teste terminar.
# --hints--
@ -49,7 +51,7 @@ Todos os testes devem passar
);
```
Você deve testar se 'res.status' se 200
Você deve testar que `res.status` seja 200
```js
(getUserInput) =>
@ -65,7 +67,7 @@ Você deve testar se 'res.status' será 200
);
```
Você deve testar se 'res.type' será 'application/json'
Você deve testar se `res.type` será `'application/json'`
```js
(getUserInput) =>
@ -81,7 +83,7 @@ Você deve testar se 'res.type' será 'application/json'
);
```
Você deve testar se 'res.body.name' será 'Giovanni'
Você deve testar se `res.body.name` será `'Giovanni'`
```js
(getUserInput) =>
@ -97,7 +99,7 @@ Você deve testar se 'res.body.name' será 'Giovanni'
);
```
Você deve testar se 'res.body.surname' será 'da Verrazzano'
Você deve testar se `res.body.surname` será `'da Verrazzano'`
```js
(getUserInput) =>

View File

@ -12,9 +12,9 @@ Lembrando que este projeto está sendo construído a partir do [Replit](https://
# --instructions--
Dentro de `tests/2_functional-tests.js`, altere o teste `'Test GET /hello with your name'` (`// #2`) para afirmar o `status` e a resposta `text` para fazer o teste passar.
Dentro de `tests/2_functional-tests.js`, altere o teste `'Test GET /hello with your name'` (`// #2`) para afirmar o `status` e o `text` da resposta para fazer o teste passar.
Envie seu nome na consulta, acrescentando `?name=<your_name>` à rota. O endpoint responde com `'hello <your_name>'`.
Envie seu nome como consulta do URL, acrescentando `?name=<your_name>` à rota. O endpoint responde com `'hello <your_name>'`.
# --hints--
@ -32,7 +32,7 @@ Todos os testes devem passar
);
```
Você deve testar se 'res.status' == 200
Você deve testar que `res.status` == 200
```js
(getUserInput) =>
@ -48,7 +48,7 @@ Você deve testar se 'res.status' == 200
);
```
Você deve testar se 'res.text' == 'hello Guest'
Você deve testar se `res.text` == `'hello <your_name>'`
```js
(getUserInput) =>

View File

@ -10,37 +10,36 @@ dashedName: run-functional-tests-on-api-endpoints-using-chai-http
Lembrando que este projeto está sendo construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
O Mocha permite testar operações assíncronas. Há uma pequena (GRANDE) diferença. Você consegue identificar?
O Mocha permite que você teste operações assíncronas, como chamadas para endpoints de API, com um plugin chamado `chai-http`.
Podemos testar os endpoints de API usando um plugin, chamado `chai-http`. Vamos ver como isso funciona. E lembre-se: as chamadas de API são assíncronas.
A seguir, vemos um exemplo de um teste usando `chai-http` para a suite `'GET /hello?name=[name] => "hello [name]"'`. O teste envia uma string de nome em uma string de consulta de url (`?name=John`) usando uma solicitação de `GET` para o `server`. Na função de callback do método `end`, o objeto de resposta (`res`) é recebido e contém a propriedade `status`. O primeiro `assert.equal` verifica se o status é igual a `200`. O segundo `assert.equal` verifica se a string de resposta (`res.text`) é igual a `"hello John"`.
A seguir, vemos um exemplo de um teste usando `chai-http` para a suite chamada `'GET /hello?name=[name] => "hello [name]"'`:
```js
suite('GET /hello?name=[name] => "hello [name]"', function () {
test("?name=John", function (done) {
test('?name=John', function (done) {
chai
.request(server)
.get("/hello?name=John")
.get('/hello?name=John')
.end(function (err, res) {
assert.equal(res.status, 200, "response status should be 200");
assert.equal(
res.text,
"hello John",
'response should be "hello John"'
);
assert.equal(res.status, 200, 'Response status should be 200');
assert.equal(res.text, 'hello John', 'Response should be "hello John"');
done();
});
});
});
```
Observe o parâmetro `done` na função de callback do teste. Chamá-la no final sem um argumento é necessário para sinalizar uma conclusão assíncrona bem-sucedida.
O teste envia uma solicitação de `GET` para o servidor com um nome (name) como a string de consulta do URL (`?name=John`). Na função de callback do método `end`, o objeto de resposta (`res`) é recebido e contém a propriedade `status`.
O primeiro `assert.equal` verifica se o status é igual a `200`. O segundo `assert.equal` verifica se a string de resposta (`res.text`) é igual a `"hello John"`.
Além disso, observe o parâmetro `done` na função de callback do teste. Chamá-la sem um argumento no final de um teste é necessário para sinalizar que a operação assíncrona está completa.
# --instructions--
Dentro de `tests/2_functional-tests.js`, altere o teste `'Test GET /hello with no name'` (`// #1`) para afirmar o `status` e a resposta `text` para fazer o teste passar. Não altere os argumentos passados às afirmações.
Dentro de `tests/2_functional-tests.js`, altere o teste `'Test GET /hello with no name'` (`// #1`) para afirmar o `status` e o `text` da resposta para fazer o teste passar. Não altere os argumentos passados para as assertivas.
Não deve haver nome na consulta. O endpoint responde com `hello Guest`.
Não deve haver consulta de URL. Não deve haver consulta de name no URL. O endpoint responde com `hello Guest`.
# --hints--
@ -58,7 +57,7 @@ Todos os testes devem passar
);
```
Você deve testar se 'res.status' == 200
Você deve testar que `res.status` == 200
```js
(getUserInput) =>
@ -74,7 +73,7 @@ Você deve testar se 'res.status' == 200
);
```
Você deve testar se 'res.text' == 'hello Guest'
Você deve testar se `res.text` == `'hello Guest'`
```js
(getUserInput) =>

Some files were not shown because too many files have changed in this diff Show More