【问题标题】:fetch dosent bring any datafetch 不带任何数据
【发布时间】:2021-12-20 02:37:55
【问题描述】:

当我使用 fetch 来获取笔记列表和 consol.log 时,它什么也没显示。网址没有错,我仔细检查过。代码如下:

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

const NotesListPage = () => {

    let [notes, setNotes] = useState([])

    useEffect(() => {

    }, [])

    let getNotes = async () => {
        let response = await fetch('http://127.0.0.1:8000/api/notes/')
        let data = await response.json()
        console.log(data)
        setNotes(data)
    } 

    return (
        <div>
            
        </div>
    )
}

export default NotesListPage

这里是api部分:

@api_view(['GET'])
def getNotes(request):
    notes = Note.objects.all()
    serializer = NoteSerializer(notes, many=True)
    return Response(serializer.data)

【问题讨论】:

  • 你甚至从不调用你的getNotes函数。
  • 这是一个愚蠢的错误,还是您确实遇到了问题?

标签: javascript reactjs django api


【解决方案1】:

你没有调用你的函数'getNotes'

我会这样做,它在 Effect 挂钩中获取您的数据并将其设置在您的状态挂钩中。

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

const NotesListPage = () => {

    let [notes, setNotes] = useState([])

    useEffect( async () => {
        const response = await fetch('http://127.0.0.1:8000/api/notes/')
            .then(response => response.json())
            setNotes(response)
    }, [])

    console.log(notes)

    return (
        <div>
            
        </div>
    )
}

export default NotesListPage

*编辑

更清洁的方法是让一个单独的函数中的 fetch 做同样的事情,然后在你的效果挂钩中调用该函数(参见上面的其他答案*)

【讨论】:

  • 非常感谢,不敢相信我这么笨
【解决方案2】:
    import React, { useState, useEffect } from 'react'

const NotesListPage = () => {

    let [notes, setNotes] = useState([])

    useEffect(() => {
         getNotes();
    }, [])

    let getNotes = async () => {
        let response = await fetch('http://127.0.0.1:8000/api/notes/')
        let data = await response.json()
        console.log(data)
        setNotes(data)
    } 

    return (
        <div>
            
        </div>
    )
}

export default NotesListPage

【讨论】:

  • 天哪!我想我正在慢慢失去我的大脑,我怎么没看到。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2021-02-17
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多