javascript - 无法在 React 中渲染项目列表

标签 javascript reactjs render

这是我的代码:

import React, { Component } from 'react';
import axios from 'axios';
import _ from 'lodash';

import Loader from './Loader';

export default class Main extends Component {
  constructor(props) {
    super(props);

    this.state = {
      isLoading: true,
        cards: {}
    };

    axios.defaults.baseURL = 'API_URL';
    axios.defaults.headers.common['KEY'] = "VALUE";
    axios.get('/cards')
      .then((resp) => {
        this.setState({
          isLoading: false,
          cards: resp.data
        });
      });
  };

  renderCards() {
    _.forOwn(this.state.cards, function(value, key) {
      return value.map((card) => {
        return <li>card.name</li>
      });
    });
  };

  render() {
    if(this.state.isLoading) {
      return (
        <div className="wrapper">
          <Loader />
        </div>
      );
    };

    return (
      <div className="wrapper">
        {this.props.children}
          <ul className="cards-list">
            {this.renderCards()}
          </ul>
      </div>
    );
  };
};

没有通过 this.renderCards() 渲染任何内容。 我也尝试过return <li>{card.name}</li> ,甚至是一个简单的字符串,但没有任何反应(没有错误,DOM 中没有任何内容)。

但是如果我改变return <li>card.name</li>对于 return console.log(card.name) ,该方法在控制台中记录所有名称。

我错过了什么?

最佳答案

您必须返回_.forOwn的结果。此外,您的列表项必须用 {} 包裹才能获取值而不是纯字符串。

renderCards() {
    return _.forOwn(this.state.cards, function(value, key) {
      return value.map((card) => {
        return <li>{card.name}</li>
      });
    });
  };

希望这有帮助。

编辑: 结果 _.forOwn 返回唯一的初始对象。所以正确的解决方案如下所示:

renderCards() {
    let list = [];
    _.forOwn(this.state.cards, function(value, key) {
      value.map((card) => {
        list.push(<li key={card.cardId}>{card.name}</li>);        
      });
    });
    return list;
  };

关于javascript - 无法在 React 中渲染项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38146222/

相关文章:

templates - 在 Flask 中同时渲染多个模板

javascript - 事件回调未获取 tinymce 目标信息

javascript - 将 HTML 存储在 JS 变量中但保留 HTML 变量

javascript - React循环数组和rende对象

node.js - 如何仅在成功接收并提供(React)表单提交的数据后获取(Express)数据?

javascript - 表行更新/删除状态(数组)中的数据以及在 React 中切换添加/删除类

vim - 在 vim 中渲染孟加拉语(可能还有其他印度语)字体

javascript - 在 JavaScript 中验证

javascript - React JS JSX 基于另一个切换组件显示或隐藏

javascript - JavaScript 中的 PHP 代码