javascript - 关于使用 fetch() 和 .then() 构建 react 状态的问题

标签 javascript reactjs asynchronous

当我尝试获取 json 文件并构建 react 状态时遇到问题。

import React, {
    Component
} from 'react';

class App extends Component {
    constructor() {
        super()
        this.state = {
            cards: []
        }
    }

    componentDidMount() {
        fetch('https://steamcdn-a.akamaihd.net/apps/583950/resource/card_set_1.3E50A21FB5DAFC5864FE5DE99E0EC84E4B3F00DB.json')
            .then(response => response.json())
            .then(cardsets => this.setState({
                cards: cardsets.card_set.card_list
            }))
    }

以上是我完成的代码。它正在发挥作用。所以此时我想让我的this.state.cards[i]对象有一个名称“颜色”,值将基于 this.state.cards[i].is_bluethis.state.cards[i].is_red等(这些仅来自 json 文件)。

我想知道我该怎么做。请帮助我,我对 react 还很陌生。

最佳答案

您可以在将其设置为状态之前映射到所需的格式:

this.setState({
 cards: cardsets.card_set.card_list.map(({ is_red, is_blue, ...rest }) => ({ 
   color: (is_red && "red") || (is_blue && "blue") || "black",
   ...rest
  })),
});

然后您可以在渲染时访问cards[i].color

或者直接在渲染时提取颜色:

 render() {
  const { cards } = this.state;

  return cards.map(card => {
   const { is_blue, is_red } = card;
   const color = (is_red && "red") || (is_blue && "blue") || "black";

   return <div style={{ color }} >Card</div>;
  });
}

关于javascript - 关于使用 fetch() 和 .then() 构建 react 状态的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54919593/

相关文章:

Angular 中使用的 JavaScript 模式

javascript - 在 JavaScript 中通过 touchmove 移动 Canvas 对象

javascript - JQuery 动画速度问题

javascript - Nodejs函数依赖

javascript - 我的nodeJS代码不是异步的

php - 解析通过 javascript 填充内容的页面

javascript - 为什么我可以调用在组件下面声明的函数?

javascript - PushRef.set() 不是函数,Firebase 查询

javascript - 我可以在 Redux 中不使用 mapStateToProps 的情况下使用 mapDispatchToProps 吗?

javascript - 使用 javascript 解决数字键盘难题