gpt4 book ai didi

javascript - React - 如何将返回的数据从导出函数传递给组件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:22 26 4
gpt4 key购买 nike

如何将从 get 请求中接收到的数据传递给组件?无论我尝试什么都行不通,但我的想法如下面的代码所示。谢谢!

    export function data() {
axios.get('www.example.de')
.then(function(res) {
return res.data
})
.then(function(data) {
this.setState({
list: data
})
})
}

import {data} from './api.js';

class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
list: ""
};
}

componentWillMount() {
data();
}
render() {
return <p > this.state.list < /p>
}
}

最佳答案

您在 data()->then 回调中调用了 this.setState,所以 thisthen< 的上下文 回调函数。相反,您应该使用箭头函数(它没有自己的上下文)并使用 call

将组件的 this 传递给 data 函数
export function data() {
axios.get('www.example.de')
.then(res => res.data)
.then(data => {
this.setState({
list: data
})
})
}

import {data} from './api.js';

class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
list: ""
};
}

componentWillMount() {
data.call(this);
}
render() {
return <p > this.state.list < /p>
}
}

但是,您的数据服务必须不知道 setState 并且更重要的是,期望从 React 组件传递 this。您的数据服务必须负责从服务器检索数据,但不负责更改组件状态,请参阅 Single responsibility principle .此外,可以从另一个数据服务调用您的数据服务。因此,您的数据服务应该返回 promise,组件可以使用它来调用 setState

   export function data() {
return axios.get('www.example.de')
.then(res => res.data)
}

然后

componentWillMount() {
data().then(data=>{
this.setState({
list: data
})
});
}

关于javascript - React - 如何将返回的数据从导出函数传递给组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45390377/

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