从动态创建的子组件更改状态-React

罗伯特·霍汉尼斯扬

在此应用中,您可以通过单击GOAL特定游戏按钮来更改足球比赛得分问题是我的匹配项保存在状态中,并且使用map方法渲染它们,而我不能为每个匹配项动态使用setState。

App.js

import React from 'react';

import Match from './components/Match';

import './App.css';

export default class App extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      games: [
        {
          home: {
            team: "Bruges",
            score: 0
          },
          guests: {
            team: "Real Madrid",
            score: 0
          }
        },
        {
          home: {
            team: "Atletico Madrid",
            score: 0
          },
          guests: {
            team: "Lokomotiv",
            score: 0
          }
        }
      ]
    };

    this.goal = this.goal.bind(this);
  };

  goal(parent) {
    let rand = Math.round(Math.random());

    if(rand) {
      this.setState((prevstate) => ({parent:  prevstate.parent.home.score + 1}))
    } else {
      this.setState((prevstate) => ({parent: prevstate.parent.guests.score + 1}))
    }
  }

  render() {
    return (
      <div className="App">
        {this.state.games.map((item, index) => {
          return (<Match 
            key={index}

            home={item.home.team}
            homeScore={item.home.score}

            guests={item.guests.team}       
            guestsScore={item.guests.score}

            goal={() => this.goal(item)}
          />);
        })}
      </div>
    );
  }

}

Match.js

import React from 'react';

import '../App.css'

const Match = props => {
    return(
    <div className="match-container">
        <span className="name-container">{props.home} </span>
        <span className="score-container">{props.homeScore}</span>

        <button onClick={props.goal}>GOAL</button>

        <span className="score-container">{props.guestsScore} </span>
        <span className="name-container">{props.guests} </span>
    </div>
    );
}

export default Match;

CodeSandBox

我认为我的问题出在goal方法上,因为我认为我不能传递参数并将其用于setState

我没有找到与此特定问题相关的答案。

乔什·皮特曼

问题是您试图像将其作为对象一样更新数组。事实是您已将游戏设置为状态数组。这是您如何更新它:

goal(parent) {
    let rand = Math.round(Math.random());
    const { games } = this.state;
    const index = games.findIndex(element => element === parent);
    const newGames = [...games];
    if (rand) {
      newGames[index].home.score = newGames[index].home.score + 1;
    } else {
      newGames[index].guests.score = newGames[index].guests.score + 1;
    }
    this.setState({ games: newGames });
  }

这是一个有效的演示https://codesandbox.io/s/practical-margulis-n0ch1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据状态创建动态的React Route组件

来自分类Dev

在React中重新渲染子组件或更改子状态

来自分类Dev

更改React组件的状态

来自分类Dev

动态创建React组件

来自分类Dev

当父状态在React中更改时停止渲染子组件

来自分类Dev

从React中的子组件更改父状态(无Redux)

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

react:如何从其父级更改子组件(功能组件,而不是类组件)的状态?

来自分类Dev

更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

来自分类Dev

创建动态组件 React (Native)

来自分类Dev

React-无法使用容器组件中定义的功能更改子组件的状态

来自分类Dev

单击带有React JS中特定键的子组件时更改父组件的状态

来自分类Dev

Reactjs状态更改不会传播到动态创建的子组件

来自分类Dev

React / react钩子:状态更改后子组件是否未重新渲染?

来自分类Dev

在React组件中创建状态而不更改状态是一种好习惯吗?

来自分类Dev

React JSX动态更改组件的状态。最佳做法以及原因

来自分类Dev

子组件的 React-Redux 缩小状态

来自分类Dev

React js更改状态不会更新组件

来自分类Dev

React Native:从其他组件更改状态

来自分类Dev

React:单击组件以更改父状态

来自分类Dev

react native:如何在状态更改时停止子组件的重新呈现?

来自分类Dev

状态更改后,React不重新渲染,我该如何设置子组件的setState?

来自分类Dev

React-redux:无法在父状态更改时触发子组件操作

来自分类Dev

在 React 中渲染动态子组件

来自分类Dev

如果我在react组件中创建变量,如何在状态更改时重新访问它?

来自分类Dev

根据服务器状态动态更新React组件状态

来自分类Dev

React:创建和引用动态组件引用

来自分类Dev

在React Native中动态创建组件

来自分类Dev

如何更改React组件的子属性

Related 相关文章

  1. 1

    根据状态创建动态的React Route组件

  2. 2

    在React中重新渲染子组件或更改子状态

  3. 3

    更改React组件的状态

  4. 4

    动态创建React组件

  5. 5

    当父状态在React中更改时停止渲染子组件

  6. 6

    从React中的子组件更改父状态(无Redux)

  7. 7

    React:子组件未在父状态更改时呈现

  8. 8

    react:如何从其父级更改子组件(功能组件,而不是类组件)的状态?

  9. 9

    更改 reactJs 父组件中的状态不会更改 react 子组件中的道具

  10. 10

    创建动态组件 React (Native)

  11. 11

    React-无法使用容器组件中定义的功能更改子组件的状态

  12. 12

    单击带有React JS中特定键的子组件时更改父组件的状态

  13. 13

    Reactjs状态更改不会传播到动态创建的子组件

  14. 14

    React / react钩子:状态更改后子组件是否未重新渲染?

  15. 15

    在React组件中创建状态而不更改状态是一种好习惯吗?

  16. 16

    React JSX动态更改组件的状态。最佳做法以及原因

  17. 17

    子组件的 React-Redux 缩小状态

  18. 18

    React js更改状态不会更新组件

  19. 19

    React Native:从其他组件更改状态

  20. 20

    React:单击组件以更改父状态

  21. 21

    react native:如何在状态更改时停止子组件的重新呈现?

  22. 22

    状态更改后,React不重新渲染,我该如何设置子组件的setState?

  23. 23

    React-redux:无法在父状态更改时触发子组件操作

  24. 24

    在 React 中渲染动态子组件

  25. 25

    如果我在react组件中创建变量,如何在状态更改时重新访问它?

  26. 26

    根据服务器状态动态更新React组件状态

  27. 27

    React:创建和引用动态组件引用

  28. 28

    在React Native中动态创建组件

  29. 29

    如何更改React组件的子属性

热门标签

归档