WordPress для React REST API: объекты недопустимы как дочерние элементы React (найдено: объект с ключами {визуализируется})

#reactjs #wordpress #fetch

#reactjs #wordpress #выборка

Вопрос:

Я попытался получить доступ к WP REST для React. Метод выборки получает данные, которые я утешил, и проверяет. Когда я пытаюсь привязать данные к функции отображения интерфейса, выдается ошибка.

 import React,{ Component } from 'react';

class HomePage extends Component{
    constructor(props){
        super(props);
    

    this.state = {
        loading:true,
        Companies:[]
    }
    }
    async componentDidMount(){
    
        
        let data= fetch('https://example.co/wp-json/wp/v2/company?per_page=10').then((resp) =>{
        resp.json().then((res)=>{
        console.log(res);
        this.setState({Companies:res,loading:false})
        })
      })
    }

    render() {

    const Companies = this.state.Companies;
      return (
        <div>

        
        


          <section className="selected-firms-banner" style={{backgroundImage: 'url("https://example.co/wp-content/themes/demotheme/images/Hero-Banner.jpg")'}}>
            <div className="container">
              <div className="banner-content">
                <div className="row">
                  <div className="col-md-12 banner-title">
                    <h1> Firms Premised on Top to Bottom Scrutiny and Analysis</h1>
                  </div>
                  <div className="col-md-12 banner-description">
                    <p>Discover the top-notch Software Development firms over the globe. We investigate every possibility to give you a chance to find a portion of the eminent firms that will concur your needs and conveys superb administrations/surveillance.</p>
                    
                  </div>
                </div>
              </div>
            </div>
          </section>
          <section className="sf-post-listing">
            <div className="container">
              <div className="listing-post-main">
                <div className="row">             
    



        
        {Companies.map((company, i) => {
               return (<div className="col-md-6 col-lg-4 col-sm-12">
               <div className="listing-post-card effect-image-1 zoom-effect-1">
                 <img src="images/listing1.jpg" className="img-fluid" />
                 <div className="overlay simple-overlay"><i className="fa fa-link" aria-hidden="true" /></div>
               </div>
                  <h3>{company.title}</h3>
             </div> )
             })}
    
            
                </div>
              </div>
            </div>
          </section>
        </div>
      );
    }
  }

export default HomePage;
 

Полный компонент правильный, просто рендеринг части данных вызывает проблему.

Ошибка: объекты недопустимы как дочерние элементы React (найдено: объект с ключами {визуализируется}). Если вы хотели отобразить коллекцию дочерних элементов, вместо этого используйте массив.

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

1. вам нужно дождаться api, и после этого вы можете его вызвать

Ответ №1:

Вам нужно подождать некоторое время до вызова API

Используйте async/await для этого

 async componentDidMount() {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos");
    const data = await response.json();
    this.setState({ Companies: data, loading: false });
}
 

https://codesandbox.io/s/bold-bash-hpefh?file=/src/App.js

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

1. Данные отображаются в консоли

2. что ты хочешь сказать?

3. У меня проблема в функции map. Эта ошибка все еще существует

4. проверьте еще раз и скажите мне

5. У меня есть debug, есть проблема с массивом. Спасибо.