如何在 React js 中将道具传递给 API URL?

Posted

技术标签:

【中文标题】如何在 React js 中将道具传递给 API URL?【英文标题】:How to pass props to API URL in React js? 【发布时间】:2020-10-14 23:16:44 【问题描述】:

我是 React 新手,在将 props 传递给 API URL 方面需要帮助。我有两个类组件-> (MyClass) 工作正常。但是,当我在其他类组件(MyOtherClass)中使用来自 MyClass 的变量作为道具时,它似乎只在“渲染”部分起作用。我的意思是<div> variable: variable, url : url2</div> 按预期显示在应用程序中,但是当我尝试将此变量从道具传递到 API URL 时,它不起作用,而是 URL 看起来像这样:"http://localhost:55111/status/[object Object]"。有什么想法可能导致问题吗??

这是我的代码:

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

export default class MyClass extends Component 
    constructor(props) 
        super(props);
        this.state = 
            data: 
        
    
   
    componentDidMount() 
        axios
            .get("http://localhost:55111/start")
            .then(response => 
                this.setState(
                    data: response.data
                );
                console.log(this.state.data);
            )
            .catch(err => 
                this.err = err;
            );
    
    render() 
        const variable  = this.state.data.sent
        return (
            <div>
                <h1>Hello worlds</h1>
                <p>var: variable</p>
                <MyOtherClass variable=variable />
            </div>

        );
    

这是另一个导致麻烦的类组件:

class MyOtherClass extends Component 
    constructor(props) 
        super(props);
        this.state = 
            data: 
         ;
    
    
    async componentDidMount() 
        const variable = this.props
       
        axios.get(`http://localhost:55111/status/$variable`)
        .then(response => 
            this.setState(
                data: response
            );
            console.log(this.state);
        )   

    render() 
        const  variable  = this.props
        const url2 = `http://localhost:55111/status/$variable`
        return (
            <div>variable: variable, url : url2</div>
        );
    

【问题讨论】:

【参考方案1】:
import React,  Component  from 'react'
import axios from 'axios'

export default class MyClass extends Component 
    constructor(props) 
        super(props);
        this.state = 
            data: 
        
    
   
    componentDidMount() 
        this.getData()
    
    async getData() => 
          const response = await axios.get("http://localhost:55111/start")
          this.setState(data: response.data)          
    
    render() 
        const variable  = this.state.data.sent
        return (
            <div>
                <h1>Hello worlds</h1>
                <p>var: variable</p>
                <MyOtherClass variable=variable />
            </div>

        );
    

使用异步等待。

【讨论】:

感谢您的回答,但是此代码对我根本不起作用。此外,我在渲染()中的其他类组件有问题,我得到所需的 URL“url:localhost:55111/status/131b3929-e72e-4da8-b2b5-b54f7a6d17ed”,但在 API url 中有“”localhost:55111/status/undefined”或“localhost:55111/status/[object Object]” @Kaja Duff 这正是我现在面临的问题,你能帮我解决这个问题吗? @Jay Parmer 您的 URL 错误,这不是操作要求的。 @justbeingalearner 你好。与此同时,我将代码完全更改为使用“React Hooks”,所以我不能给你确切的例子。但是当时我在这篇文章的帮助下解决了这个问题:***.com/questions/44182951/…

以上是关于如何在 React js 中将道具传递给 API URL?的主要内容,如果未能解决你的问题,请参考以下文章

React.js + Flux -- 在视图中将回调作为道具传递

如何在 React js 中将 props 传递给组件

如何将从 API 获取的数据作为道具传递给其路由在 React JS 的另一个页面中定义的组件?

如何在 React 中将不同的道具从父组件传递给多个子组件?

在 React TS 中将道具传递给孩子时出错

React.Js 将道具从组件传递到 NavBar 组件?