Подтвердить что ты не робот

Uncaught TypeError: this.state.data.map не является функцией

Я новичок в React, видел некоторые подобные проблемы, но не нашел, почему это происходит. Я получаю сообщение "Uncaught TypeError: this.state.data.map не является функцией". Вот код. Пожалуйста, помогите найти, в чем проблема.

class Audienses extends React.Component {

    constructor (props)
    {
        super(props);

        this.state = {
            data: ''
        };

        this.loadFromServer = this.loadFromServer.bind(this);
        this.childeDelete = this.childeDelete.bind(this);
        this.childeEdit = this.childeEdit.bind(this);

    }

    loadFromServer () {
        var xhr = new XMLHttpRequest();
        xhr.open('get', this.props.url, true);
        xhr.onload = function() {
            var data = JSON.parse(xhr.responseText);
            this.setState({ data: data });

        }.bind(this);
        xhr.send();
    }

    componentDidMount() {
        this.loadFromServer();   
    }


     render () {

         var audienses = this.state.data.map((value, index) => (
           <OneElement key={value.id} audience={value.audience} description={value.description} />
        ));

        /* or like this
         var audienses = this.state.data.map(function(s) {
             <OneElement key={s.id} audience={s.audience} description={s.description} onDeleteClick={this.childeDelete} oneEditClick={this.childeEdit} />
         }).bind(this);
        */
         return
        <div>
            <h1>Audiences</h1>
            <table id="services">
                <tr>
                    <th>Audience</th>
                    <th>Description</th>
                    <th></th>
                    <th></th>
                </tr>
                <tbody>
                   {audienses}
                </tbody>
            </table>
        </div>;
    }
}
4b9b3361

Ответ 1

Ваше начальное состояние data String., String не имеет метода .map, вам нужно изменить исходное состояние от '' до []

this.state = {  data: [] };

Ответ 2

.map не применим к объекту String. Подумайте об изменении "данных" в массиве. .map - метод, который вызывает функцию для каждого элемента массива .

Ответ 3

У меня такая же ошибка в реактив-редуксе.

проблема заключалась в том, что когда я добавляю новый продукт на странице добавления/продукта и нажимаю кнопку "Назад", эта ошибка отображается на компоненте домашней страницы

home_container.js: 8 Uncaught TypeError: products.product.map не является функцией

renderItems = (products) => (
            products.product ? 
            products.product.map(item => (
                <ProductItem {...item} key = { item._id } />
            ))
            : null
        )