Ожидал вызова назначения или функции и вместо этого увидел выражение ( я новичок в react.js поэтому я не могу понять, как решить эту ошибку)

#reactjs #react-native

Вопрос:

Я получаю ошибку (КАК я ПРОКОММЕНТИРОВАЛ СТРОКУ, ВЫЗЫВАЮЩУЮ ОШИБКУ В КОДЕ ) в следующем коде, поскольку я на этапе обучения reactjs, эта ошибка не имеет для меня никакого смысла. Требуется руководство

 componentDidMount() {
    let rooms = this.formatData(items);
    console.log(rooms);
  }

  formatData(items) {
    let tempItems = items.map((item) => {
      let id = item.sys.id;
      let images = item.fields.images.map((image) => {
        image.fields.file.url;     //  error is on this line
      });                         // The error suggest that its 
                                 // expecting an assignment or function
                                // but instead got an expression???
      let room = { ...this.fields, images, id };
      return room;
    });                 
    return tempItems;  
  }                    
                      
  render() {
    return (
      <>
        <RoomContext.Provider value={{ ...this.state }}>
          {this.props.children}
        </RoomContext.Provider>
      </>
    );
  }
}
 

Комментарии:

1. Я подозреваю items , что в этой строке не определено let rooms = this.formatData(items);

2. что images содержит?

3. Он определяется как импорт элементов из «./данные».;

4. изображения: [ { поля: { файл: { url: img4 } } } Это. это данные, которые я получаю, и они определены локально

5. поэтому , если вы хотите вернуть URL-адрес в качестве объекта в массив изображений, используйте это ({ image.fields.file.url }) , или если просто массив URL-адресов не является объектом, просто возвращаемый URL image.fields.file.url -адрес не переносится {} , если вы вводите, {} то используйте ключевое слово return, например { return image.fields.file.url; }

Ответ №1:

В настоящее время функция стрелки ( (image) => { ... } ), которую вы приводите в качестве аргумента map , ничего не возвращает. Выражения функций со стрелками требуют либо выражения, либо тела функции в правой части стрелки. То, что вы написали, является телом функции без оператора return и, следовательно (image) => { ... } , возвращается undefined по умолчанию. Вы можете либо написать выражение image.fields.file.url как есть справа от стрелки (сделав правую сторону выражением вместо тела функции), либо добавить оператор return в тело.

То есть изменить

 let images = item.fields.images.map((image) => {
    image.fields.file.url;
});
 

либо к

 let images = item.fields.images.map((image) =>
    image.fields.file.url
);
 

или

 let images = item.fields.images.map((image) => {
    return image.fields.file.url
});
 

Комментарии:

1. тай за помощь ^^