【发布时间】:2020-05-24 21:30:21
【问题描述】:
我有一个 ReactJs 组件,它从 api 获取数据并将其传递给 Slider 组件。似乎当我使用.map() 映射响应数据时,它不起作用,但如果我直接使用通过道具传递的组件中的数组索引调用数据,它会起作用。
例如我下面有两个组件,定义如下。
这是我将向其传递数据的内部组件。
import React, { Component } from 'react';
import parse from 'html-react-parser';
class HeroAreaSlid extends Component {
render() {
return (
<>
<li style={{backgroundImage:`url(${this.props.data && this.props.data.backgroundImg !== undefined && this.props.data.backgroundImg})`}}>
<div className="overlay"></div>
<div className="container-fluid">
<div className="row">
<div className="col-md-6 col-md-offset-3 col-md-pull-3 col-sm-12 col-xs-12 js-fullheight slider-text">
<div className="slider-text-inner js-fullheight">
<div className="desc">
<h1>
{
this.props.data && this.props.data.headerLine !== undefined &&
parse(this.props.data.headerLine)
}
</h1>
<p><a className="btn btn-primary btn-learn" href={this.props.data && this.props.data.link !== undefined && this.props.data.link} target="_blank" rel="noopener noreferrer">
{
this.props.data && this.props.data.text !== undefined &&
parse(this.props.data.text)
}
<i className={this.props.data && this.props.data.icon !== undefined && this.props.data.icon}></i></a></p>
</div>
</div>
</div>
</div>
</div>
</li>
</>
);
}
}
export default HeroAreaSlid;
我从这个组件中调用它。
import React, { Component } from 'react';
import axios from 'axios';
import HeroAreaSlid from './hero-area_slide'
class HeroArea extends Component {
constructor(props){
super(props)
this.state = {
heroarea_: []
}
}
componentDidMount(){
axios.get("https://sym-api-dev.herokuapp.com/sym-api/me/heroarea")
.then(response =>{
this.setState({heroarea_: response.data});
this.setState({flag: true});
})
.catch(error =>{
console.log(error);
})
}
render() {
let {heroarea_} = this.state;
return (
<>
<section id="sym-hero" className="js-fullheight" data-section="home">
<div className="flexslider js-fullheight">
<ul className="slides">
<HeroAreaSlid
data = {heroarea_[0]}
/>
<HeroAreaSlid
data = {heroarea_[1]}
/>
<HeroAreaSlid
data = {heroarea_[2]}
/>
</ul>
</div>
</section>
</>
);
}
}
export default HeroArea;
上面,如果我调用 HeroAreaSlid 三次,那么它可以工作,但如果我用下面的代码更改该块,它就不会。
{
heroarea_.map(heroarea_inner => {
<HeroAreaSlid
data = {heroarea_[0]}
/>
})
}
它不工作。请帮我让它动态化。
【问题讨论】:
标签: javascript react-native dynamic react-redux react-router