Fala Igor, tudo bem ?
Bem observado, em alguns releases a frente da versão usada no curso, o RN realmente optou por controlar as chaves dos nodes criados dinamicamente (via map
, por exemplo) apenas com strings, mandando essa warning caso usemos algo diferente.
Só uma coisa que é importante notar, é que a key prop requerida por ele para cada node gerado deve ser única, e de preferencia conceitualmente falando, ou seja, gerada através de alguma propriedade inerente ao estado do objeto carregado cuja representação visual será criada. Isso é feito pra garantir eficiência ao executar qualquer re-rendenring. Quando alteramos o estado do objeto ou recebemos novas props, o react tem que processar as alterações em memória e fazer o diff pra reconciliar o estado renderizado na tela (equivalente ao DOM na web) com o novo. No caso, se algum conflito existir entre as chaves geradas pelo index map, podemos ter problemas de atualização. Não é uma boa prática acoplar a chave do elemento com uma propriedade proveniente da infraestrutura do map
javascript. Seria legal permanecer com a estratégia de usar o id (ou qualquer outra propriedade que tenha unicidade garantida no front e no back para os elementos.), mesmo que nesse caso do curso ambas funcionem.
Eu costumo fazer assim:
keyExtractor={ item => String(item.id) }
que é mais ou menos o que você fez no primeiro trecho de código.
Abraço!