You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目中如何使用axios将API返回的控制台数据渲染到网页

React 接口返回数据渲染到页面实现方案

你需要对原有代码做三处调整即可实现需求:

  • 在state中新增存储接口返回数据、错误信息的字段
  • 请求成功后将返回数据存入state触发组件重渲染
  • 在render函数中新增数据渲染逻辑,兼容正常数据、请求异常两种场景

修改后的完整代码如下:

import React, { Component } from 'react'
import axios from 'axios'

class PostForm extends Component {
    constructor(props) {
        super(props)

        this.state = {
            key: '',
            apiResponse: null,
            error: null
        }
        console.log(this.state)
    }

    changeHandler = e => {
        this.setState({ [e.target.name]: e.target.value })
    }

    submitHandler = e => {
        e.preventDefault()
        
        axios
        .get(`http://127.0.0.1:8000/hvals_hash?key=${this.state.key}`)
        .then(response => {
            console.log(response.data)
            // 将返回数据存入state触发重渲染
            this.setState({ apiResponse: response.data, error: null })
        })
        .catch(error => {
            console.log(error)
            // 存储错误信息方便页面提示
            this.setState({ error: '请求失败,请检查参数或接口状态', apiResponse: null })
        })
    }

    render() {
        const { key, apiResponse, error } = this.state
        
        return (
            <center><div>
                <form onSubmit={this.submitHandler}>
                    <div>
                        <h2> DATE PICKER</h2><br></br>
                        <input
                            type="text"
                            name="key"
                            value={key}
                            onChange={this.changeHandler}
                        />
                        
                    </div>
                    <br></br>
                    <button type="submit">Submit</button>
                </form>
                {/* 新增数据渲染区域 */}
                <br/><br/>
                <div>
                    {error && <p style={{color: 'red'}}>{error}</p>}
                    {apiResponse && (
                        <div>
                            <h3>查询结果:</h3>
                            {/* 可根据你的实际接口返回结构调整下方渲染逻辑 */}
                            {Array.isArray(apiResponse) ? (
                                <ul>
                                    {apiResponse.map((item, index) => (
                                        <li key={index}>{JSON.stringify(item)}</li>
                                    ))}
                                </ul>
                            ) : (
                                <pre>{JSON.stringify(apiResponse, null, 2)}</pre>
                            )}
                        </div>
                    )}
                </div>
            </div></center>
        )
    }
}
export default PostForm

如果你的接口返回数据是固定结构的对象,直接替换掉上面的JSON.stringify部分,取对应字段值渲染即可,比如返回数据为{date: '2024-01-01', content: 'xxx'},直接写{apiResponse.date}、{apiResponse.content}就能展示对应值。

内容的提问来源于stack exchange,提问作者user16278360

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:24:04