代码之家  ›  专栏  ›  技术社区  ›  claudiopb

ReactJs-创建动态列表

  •  0
  • claudiopb  · 技术社区  · 6 年前

    {
      "characters": [   
        {    
          "name": "Character1",
          "punch":12,
          "kick":12,
          "special":15,
          "image":"character1"
    
        },
        {    
          "name": "Character2",
          "punch":13,
          "kick":11,
          "special":15,
          "image":"character2"  
        },         
    
        {   
          "name": "Character3",
          "punch":20,
          "kick":19,
          "special":10,
          "image":"character3"   
        }
      ]
    }
    

    我有一个父组件,它获取要传递给子组件的json数据。已成功获取数据。

    import React, { Component } from 'react'
    import Player from './Player'
    
    var data = require('./db.json');
    
    class Stage extends Component {
      constructor(props) {
        super(props)
        this.state = {
          characters: []
        }
      }
    
      componentDidMount() {
        this.setState({
          characters: data.characters
        })  
      }
    
      render() {
        return (
    
          <div className="stage">
          {console.log(this.state.characters)}
            <Player data={this.state.characters}/>
            <Player data={this.state.characters}/>
          </div>
        )
      }
    }
    
    
    export default Stage
    

    现在,我想以动态的方式渲染此组件中每个角色的每张卡 <li> <Card> 组件到

    import React from 'react'
    import Card from './Card'   
    
    const Player = (props) => { 
      return (
        <div className="player">     
          <Card/>  
        </div>
      )
    }
    
    
    export default Player 
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Matt Way    6 年前

    你想用这个吗 .map()

    const Player = ({ data }) => { 
      return (
        <div className="player">
          {data.map((character, i) => (     
            <Card key={i} name{character.name}/>  
          ))}
        </div>
      )
    }
    

    我在这里通过了考试 name character 对象(如果有意义的话)。

    还有,我要重新命名 data characters 因为这更有意义。我会将道具的默认值设置为空数组。

        2
  •  1
  •   Adnan    6 年前

    .map()

      {data.map((item, i) => (     
        <Card key={i} name={item.name}/>  
      ))}