Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何迭代JSON数据并在React中动态创建和填充组件?_Javascript_Reactjs_Jsx - Fatal编程技术网

Javascript 如何迭代JSON数据并在React中动态创建和填充组件?

Javascript 如何迭代JSON数据并在React中动态创建和填充组件?,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我是React和JSX的新手,已经创建了一个组件,其中显示了一个标题和图像,所有这些都将用作链接。我现在想通过迭代JSON数据来设置标题和图像(目前我的JSON可以通过本地定义的变量访问) 我想知道如何用适当的数据动态创建和填充组件。我的代码当前如下所示: <script> var RecipeList = React.createClass({ const items = [ {

我是React和JSX的新手,已经创建了一个组件,其中显示了一个标题和图像,所有这些都将用作链接。我现在想通过迭代JSON数据来设置标题和图像(目前我的JSON可以通过本地定义的变量访问)

我想知道如何用适当的数据动态创建和填充组件。我的代码当前如下所示:

<script>
        var RecipeList = React.createClass({
                const items = [
                    {
                        id: 2234567,
                        title: "Fried Chicken",
                        image-url: "https://images.media-allrecipes.com/userphotos/560x315/4577069.jpg",
                        ingredient: ["Chicken", "Flour", "Eggs", "Salt", "Pepper"]
                    },
                    {
                        id: 2234567,
                        title: "Grilled Chicken",
                        image-url: "https://images.media-allrecipes.com/userphotos/560x315/4577069.jpg",
                        ingredient: ["Chicken", "Olive oil", "Salt", "Pepper"]
                    }
                ]
                getDefaultProps: function() {
                  return {items: []}  
                },
                render: function() {
                    var listItems = this.props.items.map(function(item) {
                       return(
                            <div className="container-fluid">
                                <div className="row">
                                    <div className="recipeContainer col-sm-12 col-md-6 col-lg-4">
                                        <h3 className="recipeTitle">{this.props.title}</h3>
                                        <div className="recipeImage">
                                            <img src="{this.props.image}" />
                                        </div>
                                        <div className="recipeBtn">See recipe</div>
                                    </div>
                                </div>
                            </div>
                        );
                    });

                    return (
                        {listItems}
                    );
                 }
            });

ReactDOM.render(
                <div>
                    <IngredientList></IngredientList>
                    <RecipeList items={items}></RecipeList>
                    <RecipeSection></RecipeSection>
                </div>
                , document.getElementById("module"));
        </script>

var RecipeList=React.createClass({
常数项=[
{
身份证号码:2234567,
标题:“炸鸡”,
图像url:“https://images.media-allrecipes.com/userphotos/560x315/4577069.jpg",
配料:[“鸡肉”、“面粉”、“鸡蛋”、“盐”、“胡椒”]
},
{
身份证号码:2234567,
标题:“烤鸡”,
图像url:“https://images.media-allrecipes.com/userphotos/560x315/4577069.jpg",
配料:[“鸡肉”、“橄榄油”、“盐”、“胡椒”]
}
]
getDefaultProps:function(){
返回{items:[]}
},
render:function(){
var listItems=this.props.items.map(函数(项){
返回(
{this.props.title}
见菜谱
);
});
返回(
{listItems}
);
}
});
ReactDOM.render(
,document.getElementById(“模块”);

这可以通过将JSON数据传递到您的
项目中来实现,以便使用该数据通过该数据动态呈现组件

此外,还需要更新一些其他内容以使其正常工作:

  • 您需要修复输入JSON的格式,以便使用引号包装项键,或者不使用连字符

  • 在呈现列表项时,确保您是从
    map()
    中的
    项访问数据,而不是从

  • render()
    方法的
    return
    行,用“根元素”包装正在渲染的列表项。一个简单的解决方案是,通常使用
    包装返回结果,但是对于较新版本的React,您可以使用
    (这允许您在
    呈现()结果中返回多个元素,而无需添加额外的“div元素”作为结果DOM)

  • 下面是一个工作片段:
    
    /*
    使用类使用React16定义组件
    */
    类RecipeList扩展了React.Component{
    render(){
    var listItems=this.props.items.map(函数(项){
    返回(
    
    {item.title}{/*可能重复的问题谢谢你的回答,我已经更新了代码,但是仍然没有输出showing@S.Miller刚刚更新了答案和代码片段,并进行了一些其他修复-这有帮助吗?我还不能让它显示出来,但我看到您的示例工作得很好。非常感谢。我非常感谢。@S.Miller刚刚再次更新了答案n更详细一点-很高兴我能帮上忙!:)是的,如果我理解你的问题,那么只需将
    从组件
    render()
    方法中移出,并放入
    ReactDOM.render(…)
    方法中,这样它就可以包装了`