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}