获取状态 returns 未定义后
After fetch state returns undefined
我使用提取 post 数据到我的本地 api,但是在尝试获取它们时出现这样的错误。在 fetch 中我得到的结果非常好,但在那之后试图将其传递到如下状态:
this.setState({
项目:result.items})
but items returns undefined and don't know why ?
我的代码:
class App extends Component {
constructor(props) {
super(props);
this.state = {
items: [],
error: null,
isLoaded: false
};
this.setState = this.setState.bind(this);
}
componentDidMount() {
fetch("http://localhost:3000/items")
.then(res => res.json())
.then(result => {
console.log(result);
this.setState({
items: result.items,
isLoaded: true
});
console.log(this.state.items)
},
(error) => {
this.setState({
isLoaded: true,
error
});
}
)
}
render() {
const { error, isLoaded, items } = this.state;
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <div>Loading...</div>;
} else {
return (
<ul>
<h1>Saved items:</h1>
{
items && items.map(item => (
<li key={item.name}>
item: {item.name} {item.price}
</li>
))
}
</ul>
);
}
}
}
您可以执行以下任一操作:
this.setState({
items: result.items || [],
isLoaded: true
});
或
{
items && items.map(item => (
<li key={item.name}>
{item.name} {item.price}
</li>
))
}
我使用提取 post 数据到我的本地 api,但是在尝试获取它们时出现这样的错误。在 fetch 中我得到的结果非常好,但在那之后试图将其传递到如下状态:
this.setState({ 项目:result.items})
but items returns undefined and don't know why ?
我的代码:
class App extends Component {
constructor(props) {
super(props);
this.state = {
items: [],
error: null,
isLoaded: false
};
this.setState = this.setState.bind(this);
}
componentDidMount() {
fetch("http://localhost:3000/items")
.then(res => res.json())
.then(result => {
console.log(result);
this.setState({
items: result.items,
isLoaded: true
});
console.log(this.state.items)
},
(error) => {
this.setState({
isLoaded: true,
error
});
}
)
}
render() {
const { error, isLoaded, items } = this.state;
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <div>Loading...</div>;
} else {
return (
<ul>
<h1>Saved items:</h1>
{
items && items.map(item => (
<li key={item.name}>
item: {item.name} {item.price}
</li>
))
}
</ul>
);
}
}
}
您可以执行以下任一操作:
this.setState({
items: result.items || [],
isLoaded: true
});
或
{
items && items.map(item => (
<li key={item.name}>
{item.name} {item.price}
</li>
))
}