Olá, Eduardo!
O método join é necessário para "transformar" os itens do array em strings, se o método não for invocado irá funcionar normalmente devido aos placeholders (expressões interpoladas com ${}
) serem "convertidas" pela própria Template string.
Se os placeholders não forem uma string, então, serão convertidos em uma string pela JS Engine.
Tratando-se de um objeto seu método .toString()
será invocado como no exemplo abaixo:
console.log(`${{ a: 1 }}`) // '[object Object]'
Tratando-se de um array teremos:
console.log(`${['Item 1', 'Item 2']}`) // 'Item 1,Item 2'
Repare na ,
entre os itens do array.
Este comportamento ocorre devido ao "separador" não ter sido informado, o mesmo ocorreria se tivéssemos utilizado o método join sem um separador, no caso do curso utilizamos "vazio" representado pela string ''
sem nenhum conteúdo.
Em React é utilizado a sintaxe JSX para declaração da UI - em um mapping retornamos sempre um valor válido como children - logo é feito um tratamento interno na criação dos elementos, por isso não é necessário o uso explícito do join ou toString.
Segue alguns links úteis sobre o descrito acima:
Espero ter ajudado :)Bons estudos!