gpt4 book ai didi

javascript - 如何使用 React 和 Axios 将 this.data 传递给其他组件

转载 作者:行者123 更新时间:2023-11-30 14:04:18 25 4
gpt4 key购买 nike

我正在运行客户端和服务器设置(react 和 axios api 调用),我想了解如何在 React Framework 中访问我的子组件返回的数据。我可以连接到 http 服务器,但是我缺乏使用 this.state 或 props 的基础知识。

这实际上是我的 app.js

import React, { Component } from 'react';
import axios from 'axios';
import ChildComponent from "./components/childComponent"

class App extends Component {
state = {
data: [],
intervalIsSet : false
};

componentDidMount() {
this.getDataFromDb();
if (!this.state.intervalIsSet) {
let interval = setInterval(this.getDataFromDb, 10000);
this.setState({ intervalIsSet: interval });
}
}

getDataFromDb = () => {
fetch("http://localhost:3001/api/getData")
.then(data => data.json())
.then(res => this.setState({ data: res.data }));
};

render() {
const { data } = this.state;
return (
<div>
<childComponent />
</div>

);
};
}

export default App;

这是子组件。 --> 我的意图是从子组件中简单地访问(或打印出)我从服务器返回的数据。

从 'react' 导入 React, { Component };

class ChildComponent extends React.Component {
render() {
return (
{this.props.data}
);
}
}

export default ChildComponent;

最佳答案

首先确保大写 ChildComponent 的第一个字母。如果你想传递数据,你应该将该对象作为属性添加到 component,然后通过 this.props 访问它。此外,您需要呈现单个顶部元素,如果您不需要 div 或任何其他 html 元素,您可以使用 React.Fragment 将其包装。

关于数据,如果它是一个数组,你可以简单地通过它映射并返回你想看到的数据,如果你想让整个对象显示为一个字符串,您可以使用 JSON.stringify()。如果这是一个对象,您可以只显示您想要的数据。

class App extends React.Component {
//...
render() {
const { data } = this.state;
return (
<div>
<ChildComponent data={data} />
</div>
);
}
}

//for array, ex: data = ["first","name"];
class ChildComponent extends React.Component {
render() {
return (
<React.Fragment>
{this.props.data.map(item =>
<p>{item}</p>
)}
</React.Fragment>
);
}
}

//for object, ex: data = {id: 1, name: 'John'};
class ChildComponent extends React.Component {
render() {
const {data} = this.props;

return (
<React.Fragment>
<p>{data.id}</p>
<p>{data.name}</p>
</React.Fragment>
);
}
}

//for single value (string, int, etc), ex: data = "my name";
class ChildComponent extends React.Component {
render() {
return (
<React.Fragment>
<p>{this.props.data}</p>
</React.Fragment>
);
}
}

//to show object as a string (could be any object mentioned before)
class ChildComponent extends React.Component {
render() {
return (
<React.Fragment>
{JSON.stringify(this.props.data)}
</React.Fragment>
);
}
}

关于javascript - 如何使用 React 和 Axios 将 this.data 传递给其他组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com