Reactjs 对此作出反应。状态将过时
我有下面的组件,它从(Django)服务器获取JSON响应,并通过Reactjs 对此作出反应。状态将过时,reactjs,Reactjs,我有下面的组件,它从(Django)服务器获取JSON响应,并通过列表状态上的映射将结果呈现给。这正如预期的那样有效 class Listings extends Component { state = { listings: [], } loadListings() { const endpoint = '/api/listings/' const csrfToken = Cookies.get('csrftoken')
列表
状态上的映射将结果呈现给
。这正如预期的那样有效
class Listings extends Component {
state = {
listings: [],
}
loadListings() {
const endpoint = '/api/listings/'
const csrfToken = Cookies.get('csrftoken')
let thisComp = this
let lookupOptions = {
method: 'GET',
headers: {
'Content-type': 'application/json',
'X-CSRFToken': csrfToken
},
credentials: 'include'
}
fetch(endpoint, lookupOptions)
.then(function(response) {
return response.json()
}).then(function(responseData) {
// console.log(responseData.results)
thisComp.setState({
listings: responseData.results
})
}).catch(function(error) {
console.log("error", error)
})
}
componentDidMount() {
this.setState({
listings: []
})
this.loadListings()
}
render() {
const {listings} = this.state
return (
<Container className='pl-0 pr-0' style={{paddingTop: this.props.topPadding, height: '100vh'}} fluid='true'>
<div className='row p-0 no-gutters' style={{height: '100%'}}>
<div className='col-md-6' style={{height: '100%'}}>
<Scrollbars style={{height: '100%', width: '100%'}}>
{listings.length > 0 ? listings.map((listingItem) => {
return (
<ListingInline listing={listingItem} />
)
}) : <p>No Listings Found</p>}
</Scrollbars>
</div>
<div className='col-md-6 d-none d-md-block' style={{height: '100%', width: '100%'}}>
<Map listings={listings} />
</div>
</div>
</Container>
)
}
}
export default Listings;
这里传递的是整个列表状态数组,而不仅仅是一个值 所以,要调用Map组件,您必须通过这种方式在循环中传递Map组件
....
{listings.length > 0 ?
listings.map((listingItem) => {
return (
<Map listing={listingItem} />
)
}) :
<p>No Listings Found</p>}
。。。。
{listings.length>0?
listings.map((listingItem)=>{
返回(
)
}) :
未找到任何列表}
或者您可以在映射组件中映射列表数组..所以您的映射组件如下
{listings.length > 0 ?
listings.map((listingItem) => {
return (
<div>{listingItem}</div>
)
}) :
<p>No Listings Found</p>}
{listings.length>0?
listings.map((listingItem)=>{
返回(
{listingItem}
)
}) :
未找到任何列表}
如果组件在加载之前不知道如何处理它,那么它将与其中的任何内容一起传递,这可能会导致问题。“无法传递到”是什么意思?地图组件中可能也存在一些问题,您没有向我们展示,这些问题无法正确响应更改的道具。React无法将对象渲染为子对象,控制台中是否存在任何错误?控制台中没有错误。
在本质上是相同的(即,在阅读此.props后呈现一些div),这很好。componentDidMount
仅在组件装载后触发一次。您正在调用该函数以获取该方法中的数据,因此在该生命周期方法之后才能访问该数据
{listings.length > 0 ?
listings.map((listingItem) => {
return (
<div>{listingItem}</div>
)
}) :
<p>No Listings Found</p>}