Reactjs TypeError:books.map不是react中的函数
/*this.state包含:{loading:true,books:status:'success',data:(10)[{id:1,name:xyz,…},{}]*/Reactjs TypeError:books.map不是react中的函数,reactjs,rest,jsx,Reactjs,Rest,Jsx,/*this.state包含:{loading:true,books:status:'success',data:(10)[{id:1,name:xyz,…},{}]*/ import React from 'react'; export class Books extends React.Component { state = { loading: true, books: [] } componentDidMount() { fetch('**url**')
import React from 'react';
export class Books extends React.Component {
state = {
loading: true,
books: []
}
componentDidMount() {
fetch('**url**')
.then(res => res.json())
.then((data) => {
this.setState({ books: data })
})
.catch(console.log)
}
render() {
const { books } = this.state;
console.log("this.state contains:", this.state);
const b=books.data;
返回(
{b.map((k)=>(
{k.name}
))}
);
}
}
我想显示所有的值(例如:id:1,name:xyz,id:2,name:xxx)
从一个星期以来我一直在努力解决这个问题。但是不能。获取地图不是一项功能。
请帮助我解决此问题。请尝试以下操作:
设b=books.data | |[];
由于您正在componentDidMount中获取数据,因此在您想要渲染时,很可能无法获得结果。请尝试以下操作:
设b=books.data | |[];
由于您在componentDidMount中获取数据,因此当您想要渲染时,它很有可能不会得到结果。处于状态的
books
对象最初是空的,因此books.data
不存在,因此books.data.map
不起作用。条件渲染也是如此
const b = books.data;
return (
<div>
{b.map((k) => (
<h1>{k.name}</h1>
))}
</div >
);
}
const{data}=this.state.books
{data&&data.map((k)=>({k.name}))}
状态中的books
对象最初为空,因此books.data
不存在,因此books.data.map
不起作用。条件渲染也是如此
const b = books.data;
return (
<div>
{b.map((k) => (
<h1>{k.name}</h1>
))}
</div >
);
}
const{data}=this.state.books
{data&&data.map((k)=>({k.name}))}
尝试设置一个条件来检查b是否为数组!像这样:
const {data} = this.state.books
<div>
{data && data.map((k) => (<h1>{k.name}</h1>))}
</div >
const b=books.data;
返回(
{
if(数组isArray(b)){
b、 地图((k)=>(
{k.name}
))
}
}
);
}
尝试设置一个条件来检查b是否为数组!像这样:
const {data} = this.state.books
<div>
{data && data.map((k) => (<h1>{k.name}</h1>))}
</div >
const b=books.data;
返回(
{
if(数组isArray(b)){
b、 地图((k)=>(
{k.name}
))
}
}
);
}
感谢您的快速回复。天啊!它解决了我的问题。非常感谢!快乐tp帮助:)感谢您的快速响应。天啊!它解决了我的问题。非常感谢!快乐tp帮助:)谢谢你的回复。我也在尝试这个代码。但是给我一个错误:TypeError:无法读取undefinedSorry,my bad的属性'length',当书籍为空,因此没有数据要销毁:)因此更改表示,如果存在数据(可以从书籍中销毁),则根据收到的数据呈现以下内容,books
不是数组,它是一个包含数组的对象。为了干净的代码和不误导维护,请更改状态books:{}
谢谢您的回复。我也在尝试这个代码。但是给我一个错误:TypeError:无法读取undefinedSorry,my bad的属性'length',当书籍为空,因此没有数据要销毁:)因此更改表示,如果存在数据(可以从书籍中销毁),则根据收到的数据呈现以下内容,books
不是数组,它是一个包含数组的对象。为了干净的代码和不误导维护,请更改状态books:{}