2

設定中に文字列を分割しようとしています。React はエラー "TypeError:メソッドを適用しようとすると (string.split("_") など)、未定義です。

しかし、メソッドを適用しようとしなければ、文字列は正しく表示されます。くわは、状態を設定する前にメソッドを適用できますか?

  const [data, setData] = useState([]);
  const [photoArray, setPhotoArray] = useState([]);
  const [photoNum, setPhotoNum] = useState(0);
  const [photoName, setPhotoName] = useState("");

  useEffect( () => {
    const fetchData = async () => {
      const result = await axios(
        {
            url: 'http://localhost:1000',
            method: 'GET',
            },
        );
      const result2 = await axios(
        {
            url: 'https://someurl.com',
            method: 'GET'
        },
      )
        setData(result2.data.items)

      }
    fetchData();
  }, []);

  useEffect( () => {
    setPhotoArray(data.map( photo => photo.name))
  },[data])

  useEffect( () => {
    //This doesn't work
    setPhotoName(photoArray[0].split('_').join(' ')
    //This works:
    // setPhotoName(photoArray[0])
  },[photoArray])

また、useEffect を適切に使用していますか? (3 回、1 つの setSate が別の setSate を適用するのを待つたびに)

4

3 に答える 3