JavaScript
1import React from 'react';
2import theme from './Card.css';
3
4function eachLi(props) {
5 console.log(props);
6 return props.join(",");
7}
8
9const Card = (props) => (
10 <p>
11 {eachLi(props.list)}
12 </p>
13);
14
15export default Card;
このコードで親からCardに渡す引数が<Card list="a,b,c" />であればjoinは間違いです。渡されたlistは文字列であり、 joinメソッドを持ちません。文字列を分解するsplitで配列に分解して返せば{eachLi(props.list)}部分はabcという文字列になります。
<Card list={[a,b,c]} />であれば、渡されたlistは配列であり、joinが正しいです。ただし、joinで得られる結果の文字列はa,b,cであり、間にjoinに渡した引数の,が挟まれます。なにもはさみたくないならjoin("")~~またはjoin()~~としてください。
(嘘つきました。引数無しのjoin()だとデフォルトで,が挟まります)
追記
Cardにlistが渡されないパターンが存在する場合、Cardの中でlistを「存在する前提」で使ってはいけません。必ずnullやundefinedになっていないかチェックする必要があります。
JavaScript
1function eachLi(props) {
2 console.log(props);
3 if(Array.isArray(props)) { // propsが配列である
4 return props.join(",");
5 }
6 else { // propsが配列ではない(nullやundefinedだった場合)
7 return "";
8 }
9}