【问题标题】:getting data from backend using axios method in react functional comonent在反应功能组件中使用axios方法从后端获取数据
【发布时间】:2020-03-14 12:03:58
【问题描述】:

我在功能组件中使用 axios 方法..我已经在我的项目中尝试过...它无法正常工作....它显示抛出错误...如课程未定义...请帮助这个问题....我想使用我使用过的 url 从后端获取数据...

import React, { useState, useEffect } from 'react';

const Example =() => {
 const [users, setUsers] = useState([])
 useEffect(()=> {
    Axios.get("https://www.example.com/users/id/")
            .then(response => {
               this.setState({ courses: response.data })
                // console.log(response.data)
            })
            .catch(error => {
                console.log(error)
            })
 }, [])   

 return (
            <div>
             <Col xl={12} lg={12} md={12} sm={12} xs={12}>
                    <div className="main-boxes">
                        <div className="index-box-head">
                            3. Courses
                                </div>
                        <div className="course-index-boxes">
                            <div className="scrolling-data">
                                <List>
                                    {courses.map((course, key) => (
                                        <ListItem className="button-class" button key={key}>
                                            <NavLink className="link-levels" exact activeClassName="activeclass" to={course.diploma_url}>
                                                {course.diploma_course}
                                            </NavLink>
                                        </ListItem>
                                    ))}

                                </List>
                            </div>
                        </div>
                    </div>
                </Col>
            </div>
         )
}
export default Example

【问题讨论】:

  • 那么你在哪里定义courses
  • this.setState({ course: response.data }).....

标签: reactjs


【解决方案1】:

你没有this 这里不是 Class 所以你应该像这样得到它:

const Example =() => {
  const [courses, setCourses] = useState([]);
  useEffect(()=> {
    Axios.get("https://www.example.com/users/id/")
      .then(response => {
         setCourses(response.data);
         // console.log(response.data);
      })
      .catch(error => {
        console.log(error);
      })
  }, []);

稍后:

{courses.map((course, index) => (                                        
  <ListItem className="button-class" button key={index}>
    <NavLink
      className="link-levels"
      exact
      activeClassName="activeclass"
      to={course.diploma_url}
    >                                                
      {course.diploma_course}
    </NavLink>
  </ListItem>
))}

【讨论】:

  • 虽然不是标准规则,但通常不建议使用数组索引作为映射 JSX 中的键。我们对每个球场的形状一无所知,但很可能它们确实有一些独特的属性。
猜你喜欢
  • 2020-03-16
  • 2020-07-17
  • 2019-08-09
  • 2019-07-24
  • 2018-10-05
  • 2023-01-21
  • 2019-07-14
  • 2020-06-28
  • 2021-12-15
相关资源
最近更新 更多