如何将组件CountryName和组件CountryCapital添加到组件Country?
在浏览器中显示列表:
俄罗斯
莫斯科
法国
巴黎
export default [{
id: 1,
name: 'France',
capital: 'Paris',
},
{
id: 2,
name: 'Russia',
capital: 'Moscow'
}];
import React, { Component } from 'react'
class CountryName extends Component {
render() {
const {data} = this.props;
const CountryName = data.map(country => {
return (
<div>
<h2>{country.name}</h2>
</div>
)
})
return (
<div>
{CountryName}
</div>
);
}
}
export default CountryName;
import React, { Component } from 'react'
class CountryCapital extends Component {
render() {
const {data} = this.props;
const CountryCapital = data.map(country => {
return (
<div>
<p>{country.capital}</p>
</div>
)
})
return (
<div>
{CountryCapital}
</div>
);
}
}
export default MovieDescription;
import React, { Component } from 'react'
import CountryName from './CountryName';
import CountryCapital from './CountryCapital';
class Country extends Component {
render() {
const {data} = this.props;
const country = data.map(country => {
return (
<li key = {country.id}>
</li>
)
})
return (
<ul>
{Country}
</ul>
);
}
}
export default Country;
import React, {Component} from 'react';
import Country from './components/Country';
class App extends Component {
render() {
return (
<div>
<Country data={this.props.data}/>
</div>
)
}
}
export default App;
//HTML:
<body>
<div id="root"></div>
</body>`
答案 0 :(得分:0)
首先,您的组件的结构是这样的,它将首先逐个列出所有国家/地区名称,然后逐个列出国家/地区的大写字母。
由于您的要求是将国家及其资本显示为一个组(如每行中列出的那样),因此您不需要两个组件。在Country组件中,只需调用新编写的组件即可将其显示为一个组。
这样的东西会起作用。将CountryName和CountryCapital组合到单个组件(CountryData),如下所示。
const {data} = this.props;
const CountryData = data.map(country => {
return (
<div>
<div><h2>{country.name}</h2></div>
<div><h2>{country.capital}</h2></div>
</div>
)
})
return (
<div>
{CountryData}
</div>
);
在您的组件国家/地区,调用此新组件并传递道具,如:
import CountryData from './CountryData';
......
......
render() {
const {data} = this.props;
return (
<CountryData data={this.props.data} />
);
}
希望有所帮助。
答案 1 :(得分:0)
错误:JSX元素必须包含在封闭标记中
return (
<div><h2>{country.name}</h2></div>
<div><h2>{country.capital}</h2></div>
^
)
})