gpt4 book ai didi

javascript - 如何在react中进行fetch?

转载 作者:行者123 更新时间:2023-12-03 13:57:01 37 4
gpt4 key购买 nike

下午好,我从服务器获取json,我处理它,但是对render的调用发生了2次。Google,在构造函数中创建一个空对象。如果该对象没有属性,则返回undefined,但是我也有数组,应用程序从中崩溃。我附上了代码。如何将数据取出状态?是否可以在渲染中获取并写入?

export default class Forma extends React.Component {
constructor(props) {
super(props);
this.state = { data: [] };
}

componentWillMount() {
fetch("http://localhost:3001")
.then(response => response.json())
.then(result => this.setState({ data: result }))
.catch(e => console.log(e));
}

render() {
const { data } = this.state;

return <h1>{console.log(data.goals[0].gs_id)}</h1>; //падает
}
}

最佳答案

使用 componentDidMount 而不是 componentWillMount,它已被弃用。

这是 Christopher 处理异步操作的答案中非常好的补充。

class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: []
};
}
componentDidMount() {
fetch("https://jsonplaceholder.typicode.com/todos")
.then(response => response.json())
.then(result =>
this.setState({
data: result
})
)
.catch(e => console.log(e));
}
render() {
const { data } = this.state;

return <h1> {data[0] ? data[0].title : 'Loading'} </h1>;
}
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>

关于javascript - 如何在react中进行fetch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56813960/

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