2 回答

TA貢獻1876條經驗 獲得超7個贊
第一次嘗試訪問時data[0],它仍然是空的:
this.state = {
post: [],
isLoaded: false,
}
并且const data = this.state.post;意味著data[0]未定義。
只有在安裝了組件并且正確設置了data[0]定義的狀態(或不設置,取決于 API 返回的內容)之后。

TA貢獻1775條經驗 獲得超8個贊
我找到了一種通過添加另一個“then”來使其工作的方法,因此它可以在設置“posts”狀態后立即設置“keys”狀態。但是我想知道是否有另一種方法可以使它更優雅。感謝您嘗試提供幫助。
constructor(props) {
super(props);
this.state = {
posts: [],
isLoaded: false,
keys: []
}
}
componentDidMount() {
const url = 'https://jsonplaceholder.typicode.com/users';
fetch(url)
.then(result => result.json())
.then(posts => {
this.setState({ posts: posts })
})
.then(_ => { this.setState({ keys: Object.keys(this.state.posts[0]) }) })
}
render() {
const keys = this.state.keys;
return (
<div>
<h5>{keys}</h5>
</div>
)
}
添加回答
舉報