gpt4 book ai didi

javascript - 使用对象数组中的 propTypes 来 react 组件

转载 作者:行者123 更新时间:2023-12-03 00:09:47 25 4
gpt4 key购买 nike

我在使用 propTypes 和对象数组创建 React 组件时遇到一些问题。

所以我有这个对象数组:

var movies = [
{
id: 1,
title: "Harry Potter",
desc: "Wizzard Movie",
src:
"https://ocdn.eu/pulscms-transforms/1/isDktkqTURBXy9kMmM4YmI4N2QzY2U0ZjI5NmIzNTU3Mjk2ZTg2ZWY2My5qcGVnkZMCAM0B5A"
},
{
id: 2,
title: "LK",
desc: "Movie about Lion King",
src: "https://1.fwcdn.pl/an/np/1985708/2016/5817_1.7.jpg"
},
{
id: 3,
title: "Pulp Fiction",
desc: "xxx",
src:
"https://coubsecure-s.akamaihd.net/get/b44/p/coub/simple/cw_timeline_pic/2d2d519173e/5f0067e9d4849ef1dee4a/big_1518161198_image.jpg"
},
{
id: 4,
title: "Lethal Weapon 3",
desc: "Movie about..",
src: "https://media.teleman.pl/photos/lethal-weapon-3.jpg"
}
];

我想做的是: 1.为我想要创建的每个组件创建类: - 电影类应包含:标题、描述和图像。所以我必须为每个元素(标题、desc、img)创建 propType?

var Movie = React.createClass({
render: function() {
return (
React.createElement(
"li",
{ key: movie.id },
React.createElement(MovieTitle, {}),
React.crreateElement("p", {}, this.props.movie.desc),
React.createElement("img", { src: this.props.movie.src })
));
},
propTypes: {
image: React.PropTypes.object.isRequired,
des: React.PropTypes.object.isRequired,
title: React.PropTypes.object.isRequired
}
});

- Movie Title Class

var MovieTitle = React.createClass({
render: function() {
return React.createElement("h2", {}, this.props.movie.title);
},
propTypes: {
title: React.PropTypes.object.isRequired
}
});

- MovieDescription Class

var MovieDescription = React.createClass({
render: function() {
return React.createElement("p", {}, this.props.movie.desc);
},
propTypes: {
desc: React.PropTypes.object.isRequired
}
});

- Movie Image Class

var MovieImage = React.createClass({
render: function() {
return React.createElement("img", {src: this.props.movie.src})
},
propTypes: {
image: React.ProTypes.object.isRequired
}
});

我想对对象数组进行映射并创建电影元素并将它们放入渲染中,然后将整个列表放入 div#app 中。

  • 问题是,我可以用 movie.map 方法来制作它,并使每个元素都带有“循环”。
  • var moviesElements = movies.map(function(movie) {
    return React.createElement(
    "li",
    { key: movie.id },
    React.createElement("h2", {}, movie.title),
    React.createElement("p", {}, movie.desc),
    React.createElement("img", {}, movie.src)
    );
    });

    var element = React.createElement(
    "div",
    {},
    React.createElement("h1", {}, "List of movies"),
    React.createElement("ul", {}, moviesElements)
    );

    ReactDOM.render(element, document.getElementById("app"));

    但我不知道如何使用由类和 propTypes 组成的所有这些组件来处理这个问题。

    如果有任何帮助,我将不胜感激:)

    最佳答案

    您只需映射电影并使用类组件作为第一个参数创建一个 react 元素即可做到这一点。

    var moviesElements = movies.map(function(movie) {
    return React.createElement(Movie, {movie: movie});
    });

    我做了一个code sandbox example (还修复了您共享的代码中的一些拼写错误和缺少的参数)

    关于javascript - 使用对象数组中的 propTypes 来 react 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54795220/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com