检查数组时无法读取 null 的 属性 'length'

Cannot read property 'length' of null when checking array

我正在尝试在网站上显示一些照片。每次尝试时,我都会收到此错误:

Cannot read property 'length' of null

import React, { Component } from 'react';
import axios from 'axios';


class ImagePlayer extends Component {
constructor(props) {
    super(props);
    this.state = {
        photos: null
    };
}

componentDidMount() {
    axios.get(`/api/gameDev/image-files/${this.props.charId}/pics`)
        .then((response) => {
            this.setState({ photos: response.data })
        })
        .catch((error) => {
            console.log(error);
        });

}

showMedia = (props) => {
    return (
        <div>
            {
                props.photos.length > 0 &&
                    <div>
                        {props.photos.map((photo) => photo.title)}
                    </div>
            }
        </div>
    );
}

render() {
    return (
        <div>
            <div>Show Media</div>
            <div>
                {this.showMedia(this.state)}
            </div>
        </div>
    );
}

}

导出默认 ImagePlayer;

我知道我做错了什么。如果有人看到什么,请告诉我。

谢谢! :)

将初始 photos 状态设置为空数组:

this.state = {
    photos: []
};

或者,将 props.photos.length > 0 更改为:

props.photos && props.photos.length > 0 // or (props.photos || []).length > 0

第一次安装渲染时,状态中的照片为空。你需要将它设置为一个初始的空数组,这样这个阶段就不会失败:

this.state = {
  photos: []
};