现在刚开始学习 React,我似乎无法让 Planet 组件在映射到 Planet 数组后显示属性。即使当我 console.log 来自 Planet 组件的某些内容时,它也会显示为未定义。显然我在我的 App 组件和我的 Planet 组件之间搞砸了一些东西,但我不知道是什么。
const planets = [
{
id: '1',
name: 'Mercury',
diameter: '3,031.67 mi',
moons: 'none',
desc: 'Mercury is the closest planet to the Sun. Due to its proximity, it\'s not easily seen except during twilight. For every two orbits of the Sun, Mercury completes three rotations about its axis. Up until 1965 it was thought that the same side of Mercury constantly faced the Sun.',
url: 'img/mercury.jpg'
},
{
id: '2',
name: 'Venus',
diameter: '7,521 mi',
moons: 'none',
desc: 'Venus is the second planet from the Sun and is the second brightest object in the night sky after the Moon. Venus is the second largest terrestrial planet and is sometimes referred to as the Earth’s sister planet due the their similar size and mass.',
url: 'img/venus.jpg'
},
{
id: '3',
name: 'Earth',
diameter: '7,917.5 mi',
moons: '1',
desc: 'Earth is the third planet from the Sun and is the largest of the terrestrial planets. The Earth is the only planet in our solar system not to be named after a Greek or Roman deity. The Earth was formed approximately 4.54 billion years ago and is the only known planet to support life.',
url: 'img/earth.jpg'
},
{
id: '4',
name: 'Mars',
diameter: '4,212 mi',
moons: '2',
desc: 'The fourth planet from the Sun and the second smallest planet in the solar system. Mars is often described as the "Red Planet" due to its reddish appearance. It\'s a terrestrial planet with a thin atmosphere composed primarily of carbon dioxide.',
url: 'img/mars.jpg'
},
{
id: '5',
name: 'Jupiter',
diameter: '86,881.4 mi',
moons: '79',
desc: 'The planet Jupiter is the fifth planet out from the Sun, and is two and a half times more massive than all the other planets in the solar system combined. It is made primarily of gases and is therefore known as a "gas giant".',
url: 'img/jupiter.jpg'
},
{
id: '6',
name: 'Saturn',
diameter: '72,367.4 mi',
moons: '62',
desc: 'Saturn is the sixth planet from the Sun and the most distant that can be seen with the naked eye. Saturn is the second largest planet and is best known for its fabulous ring system that was first observed in 1610 by the astronomer Galileo Galilei.',
url: 'img/saturn.jpg'
},
{
id: '7',
name: 'Uranus',
diameter: '31,518 mi',
moons: '27',
desc: 'Uranus is the seventh planet from the Sun. While being visible to the naked eye, it was not recognised as a planet due to its dimness and slow orbit. Uranus became the first planet discovered with the use of a telescope.',
url: 'img/uranus.jpg'
},
{
id: '8',
name: 'Neptune',
diameter: '30,599 mi',
moons: '14',
desc: 'Neptune is the eighth planet from the Sun making it the most distant in the solar system. This gas giant planet may have formed much closer to the Sun in early solar system history before migrating to its present position.',
url: 'img/neptune.jpg'
},
];
const App = (props) => {
return (
<Container planets={props.planets} >
{props.planets.map((planet) => {
return ( <Planet
name={planet.name}
key={planet.id.toString()}
name={planet.name}
diameter={planet.diameter}
moons={planet.moons}
desc={planet.desc}
url={planet.url}
/>)
})}
</Container>
);
}
const Planet = (props) => {
console.log(props.url)
return (
<div className="card">
<div>
<img src={props.url} alt={props.name} />
</div>
<h2>{props.name}</h2>
<p>{props.desc}</p>
<h3>Planet Profile</h3>
<ul>
<li><strong>Diameter:</strong>{props.diameter}</li>
<li><strong>Moons:</strong> {props.moons}</li>
</ul>
</div>
);
};
const Container = (props) => {
console.log(props.planets.length)
return (
<div className="container">
<Planet planets={props.planets}
/>
</div>
);
};
ReactDOM.render(
<App planets={planets} />,
document.getElementById('root')
);
您的Container
组件未呈现其children
const Container = props => {
return (
<div className="container">
<Planet planets={props.planets} />
</div>
);
};
注意div
标签之间,你只渲染了一个Planet
组件。
您可能应该将其更改为:
const Container = props => {
return (
<div className="container">{props.children}</div>
);
};
因此,在您的App
组件中,您map
现在可以使用该功能。
<Container>
{props.planets.map(planet => {
return (
<Planet
name={planet.name}
key={planet.id.toString()}
name={planet.name}
diameter={planet.diameter}
moons={planet.moons}
desc={planet.desc}
url={planet.url}
/>
);
})}
</Container>
查看Container
标签之间的所有内容- 将提供props.children
给Container
组件。
你可以在这里了解更多信息:https : //reactjs.org/docs/composition-vs-inheritance.html
还有很多其他关于 Reactchildren
道具的好文章- 只是谷歌React props.children
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句