React의 함수에서 classNames 라이브러리를 사용하는 방법은 무엇입니까?

JackLappa

클래스에서 클래스 이름을 사용할 수 있다는 것을 알고 있지만 클래스가 없기 때문에 후크를 사용하고 있기 때문에 함수에서 사용하고 싶다고 가정하겠습니다. 이것은 내 코드입니다.

import React, { useState } from 'react';
import ReactDOM from 'react-dom';
import { classNames } from "classnames";
import './index.css';
var [a1, b1, c1] = [];
var finished = false;

function Square(props) {
  var classes = classNames({"square":!finished,"squares":props.valid&&finished,"squarez":finished&&!props.valid})
  return (
    <button className={classes} onClick={() => props.onClick()}>
      {props.value}
    </button>
  );
}

function Board() {

  const [arr, setArr] = useState(Array(9).fill(null));
  const [xIsNext, setXIsNext] = useState(true);
  function handleClick(i) {
    if (!arr[i] && !winner) {
      const squares = arr.slice();
      squares[i] = xIsNext ? 'X' : 'O';
      setArr(squares);
      setXIsNext(!xIsNext);
    }
  }

  function renderSquare(i) {
    return <Square value={arr[i]} onClick={() => handleClick(i)} valid={a1 === i || b1 === i || c1 === i ? true : false} />;
  }
  const winner = calculateWinner(arr);
  const status = winner ? 'Winner is: ' + winner : 'Next player: ' + (xIsNext ? 'X' : 'O');
  return (
    <div>
      <div className="status">{status}</div>
      <div className="board-row">
        {renderSquare(0)}
        {renderSquare(1)}
        {renderSquare(2)}
      </div>
      <div className="board-row">
        {renderSquare(3)}
        {renderSquare(4)}
        {renderSquare(5)}
      </div>
      <div className="board-row">
        {renderSquare(6)}
        {renderSquare(7)}
        {renderSquare(8)}
      </div>
    </div>
  );

}

class Game extends React.Component {
  render() {
    return (
      <div className="game">
        <div className="game-board">
          <Board />
        </div>
        <div className="game-info">
          <div><button onClick={Board}>alaa </button></div>
          <ol>{/* TODO */}</ol>
        </div>
      </div>
    );
  }
}
function calculateWinner(squares) {
  const lines = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  for (let i = 0; i < lines.length; i++) {
    const [a, b, c] = lines[i];
    if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
      [a1, b1, c1] = lines[i];
      finished = true;
      return squares[a];
    }
  }
  return null;
}
// ========================================

ReactDOM.render(
  <Game />,
  document.getElementById('root')
);

다음과 같은 오류가 발생합니다. TypeError : Object (...) is not a function. 이에 대한 해결 방법은 무엇입니까? 참고로이 프로젝트에 대한 모든 코드를 추가했습니다. 튜토리얼 섹션의 Reacts의 공식 웹 사이트에서 이것을 가져 왔지만 약간 놀았습니다.

슈 로이

classNames를 잘못 가져오고 있습니다. 이럴거야

import classNames from "classnames";

이것이 당신이 성취하고 싶은 것입니까?

function classes(finished, props){
  return classNames({
    "square":!finished,
    "squares":props.valid && finished,
    "squarez":finished && !props.valid
  })
}

function Square(props) {
  let finished = true;
  return (
    <button className={classes(finished,props)} onClick={() => props.onClick()}>
    {props.value}
    </button>
  );
}

라이브 코드 샌드 박스

CSSTransition 구성 요소 편집 (전환 포함) (분기 됨)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++의 cmath 라이브러리에서 특수 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

GitHub의 사용자 지정 라이브러리를 Android 앱에 포함하는 방법은 무엇입니까?

분류에서Dev

Xamarin.iOS에서 Danielgindi의 iOS 차트 라이브러리를 사용하는 방법은 무엇입니까?

분류에서Dev

파이썬 라이브러리에서 사용자 정의 함수를 호출하는 좋은 방법은 무엇입니까?

분류에서Dev

모의 라이브러리를 사용하지 않고 iOS Swift에서 시스템 라이브러리를 모의하는 방법은 무엇입니까?

분류에서Dev

Perl에서 라이브러리 함수의 출력을 리디렉션하는 방법은 무엇입니까?

분류에서Dev

Google Cloud 함수에서 pyodbc 라이브러리를 사용하는 방법은 무엇입니까?

분류에서Dev

JS에서 "require is not defined"의 의미와 브라우저에서 라이브러리를 사용할 수있는 방법은 무엇입니까?

분류에서Dev

C ++의 Boost 라이브러리에서 rayleigh_distribution <>을 사용하는 방법은 무엇입니까?

분류에서Dev

VB에서 라이브러리 Math.Net의 Integrate.OnClosedInterval을 사용하는 방법은 무엇입니까?

분류에서Dev

llvm-10 라이브러리를 사용하여 C ++에서 LLVM GlobalValue 변수를 정의하는 방법은 무엇입니까?

분류에서Dev

Android의 simplexml 라이브러리에서 소스 코드를 사용하고 수정하는 방법은 무엇입니까?

분류에서Dev

docx 라이브러리를 사용하여 MS Word 문서의 테이블에서 이미지를 추출하는 방법은 무엇입니까?

분류에서Dev

이전에 라이브러리가 바인딩하는 데 사용한 Javascript에서 이벤트를 재정의하는 방법은 무엇입니까?

분류에서Dev

React에서 라이브러리를 전역 적으로 공유하는 방법은 무엇입니까?

분류에서Dev

인텔의 수학 함수 라이브러리를 gcc와 함께 사용하는 방법은 무엇입니까?

분류에서Dev

이 라이브러리의 모든 참조와 함께 클래스 라이브러리에 대한 참조를 추가하는 방법은 무엇입니까?

분류에서Dev

웹 사이트 내에서 봇 비즈니스의 웹훅 라이브러리를 사용하는 방법은 무엇입니까?

분류에서Dev

Python에서 unrar 라이브러리의 경로를 설정하는 방법은 무엇입니까?

분류에서Dev

Android의 라이브러리에 서비스를 추가하는 방법은 무엇입니까?

분류에서Dev

gcc 전처리기를 사용하여 표준 라이브러리에서 정의를 찾는 방법은 무엇입니까?

분류에서Dev

'react-countdown-now'라이브러리에서 시작 및 일시 중지 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

Kotlin 네이티브에서 신속한 라이브러리를 사용하는 방법은 무엇입니까?

분류에서Dev

Android Studio의 React 네이티브 프로젝트에 외부 라이브러리를 포함하는 방법은 무엇입니까?

분류에서Dev

Java Project에서 약간 수정 된 JMTP 라이브러리를 사용하는 방법은 무엇입니까?

분류에서Dev

C에서 Mersenne Twister 난수 생성 라이브러리를 사용하는 방법은 무엇입니까?

분류에서Dev

typescript에서 라이브러리를 가져 오는 다른 방법의 차이점은 무엇입니까?

분류에서Dev

cmake를 사용하여 내 코드에 라이브러리를 포함하는 방법은 무엇입니까?

분류에서Dev

클라이언트 측에서 estraverse js 라이브러리를 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    C ++의 cmath 라이브러리에서 특수 함수를 호출하는 방법은 무엇입니까?

  2. 2

    GitHub의 사용자 지정 라이브러리를 Android 앱에 포함하는 방법은 무엇입니까?

  3. 3

    Xamarin.iOS에서 Danielgindi의 iOS 차트 라이브러리를 사용하는 방법은 무엇입니까?

  4. 4

    파이썬 라이브러리에서 사용자 정의 함수를 호출하는 좋은 방법은 무엇입니까?

  5. 5

    모의 라이브러리를 사용하지 않고 iOS Swift에서 시스템 라이브러리를 모의하는 방법은 무엇입니까?

  6. 6

    Perl에서 라이브러리 함수의 출력을 리디렉션하는 방법은 무엇입니까?

  7. 7

    Google Cloud 함수에서 pyodbc 라이브러리를 사용하는 방법은 무엇입니까?

  8. 8

    JS에서 "require is not defined"의 의미와 브라우저에서 라이브러리를 사용할 수있는 방법은 무엇입니까?

  9. 9

    C ++의 Boost 라이브러리에서 rayleigh_distribution <>을 사용하는 방법은 무엇입니까?

  10. 10

    VB에서 라이브러리 Math.Net의 Integrate.OnClosedInterval을 사용하는 방법은 무엇입니까?

  11. 11

    llvm-10 라이브러리를 사용하여 C ++에서 LLVM GlobalValue 변수를 정의하는 방법은 무엇입니까?

  12. 12

    Android의 simplexml 라이브러리에서 소스 코드를 사용하고 수정하는 방법은 무엇입니까?

  13. 13

    docx 라이브러리를 사용하여 MS Word 문서의 테이블에서 이미지를 추출하는 방법은 무엇입니까?

  14. 14

    이전에 라이브러리가 바인딩하는 데 사용한 Javascript에서 이벤트를 재정의하는 방법은 무엇입니까?

  15. 15

    React에서 라이브러리를 전역 적으로 공유하는 방법은 무엇입니까?

  16. 16

    인텔의 수학 함수 라이브러리를 gcc와 함께 사용하는 방법은 무엇입니까?

  17. 17

    이 라이브러리의 모든 참조와 함께 클래스 라이브러리에 대한 참조를 추가하는 방법은 무엇입니까?

  18. 18

    웹 사이트 내에서 봇 비즈니스의 웹훅 라이브러리를 사용하는 방법은 무엇입니까?

  19. 19

    Python에서 unrar 라이브러리의 경로를 설정하는 방법은 무엇입니까?

  20. 20

    Android의 라이브러리에 서비스를 추가하는 방법은 무엇입니까?

  21. 21

    gcc 전처리기를 사용하여 표준 라이브러리에서 정의를 찾는 방법은 무엇입니까?

  22. 22

    'react-countdown-now'라이브러리에서 시작 및 일시 중지 함수를 호출하는 방법은 무엇입니까?

  23. 23

    Kotlin 네이티브에서 신속한 라이브러리를 사용하는 방법은 무엇입니까?

  24. 24

    Android Studio의 React 네이티브 프로젝트에 외부 라이브러리를 포함하는 방법은 무엇입니까?

  25. 25

    Java Project에서 약간 수정 된 JMTP 라이브러리를 사용하는 방법은 무엇입니까?

  26. 26

    C에서 Mersenne Twister 난수 생성 라이브러리를 사용하는 방법은 무엇입니까?

  27. 27

    typescript에서 라이브러리를 가져 오는 다른 방법의 차이점은 무엇입니까?

  28. 28

    cmake를 사용하여 내 코드에 라이브러리를 포함하는 방법은 무엇입니까?

  29. 29

    클라이언트 측에서 estraverse js 라이브러리를 사용하는 방법은 무엇입니까?

뜨겁다태그

보관