我正在尝试使用onClick和value对一组框进行反应来更新颜色。

我尝试了几种不同的方法,但是没有用。我最终希望使颜色与井字游戏中的不同变化保持一致。

    function Square(props) {
      return (
        <button className="square" onClick={props.onClick}>
          {props.value},
          {props.style},

        </button>
      );
    }



    class Board extends React.Component {
      constructor(props) {
        super(props);
        this.state = {
          backgroundColor: 'gray';
          squares: Array(9).fill(null),
          xIsNext: true,

        };
      }

      handleClick(i) {
        const squares = this.state.squares.slice();
        const { containerStyle } = styles;
        squares[i] = this.state.xIsNext ? 'X' : 'O';
        backgroundColor = this.state.xIsNext ? 'blue' : 'red';
        this.setState({
          backgroundColor: 'someNewColor',
          squares: squares,
          xIsNext: !this.state.xIsNext,
        });
      }

      renderSquare(i) {
        return (
          <Square
            value={this.state.squares[i]}
            color={this.state.backgroundColor}
            onClick={() => this.handleClick(i)}
          />
        );
      }

最佳答案

我不确定您的呈现方式,您的代码似乎有很多问题。

这是工作代码,并且在单击正方形时更改背景颜色。

不是全部代码,但是这将使您了解应如何编码。

import React from "react";
import ReactDOM from "react-dom";

class Board extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      backgroundColor: 'gray',
      squares: Array(9).fill(null),
      xIsNext: true,
    };
  }

  handleClick(i) {
    const squares = this.state.squares.slice();
    squares[i] = this.state.xIsNext ? 'X' : 'O';
    this.setState({
      backgroundColor: this.state.xIsNext ? 'yellow': 'red',
      squares: squares,
      xIsNext: !this.state.xIsNext,
    });
  }

  renderSquare(i) {
    return (
      <Square
        value={this.state.squares[i] || 'X'}
        color={this.state.backgroundColor}
        onClick={() => this.handleClick(i)}
      />
    );
    }
    render () {
      return (<div>
        {this.renderSquare(1)}
      </div>);
    }
  }

function Square(props) {
  return (
    <button className="square" onClick={props.onClick} style={{ backgroundColor: props.color}}>
      {props.value}
    </button>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<Board />, rootElement);


希望有帮助!!!

关于javascript - 使用react我试图在单击时更新值时更改按钮的颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58056120/

10-09 20:42