2017-12-28 29 views
0

나는 게임을 배우고 있으며, 카드 게임을 만들려고 노력하고 있습니다. 카드를 클릭하면 그 카드를 빈 배열. 두 번째 카드를 클릭하면 어레이가 첫 번째 카드를 저장하지 않거나 새로운 카드를 클릭 할 때마다 소품의 값이 바뀌므로 올바르게 저장하지 않습니다. 나는 비슷한 질문을했지만 그것들이 게시 한 문제는 다르다.반응하는 앱에 배열에 객체를 추가하는 방법

import React from 'react'; 
import '../memoryGameStyle/card.css'; 

class Card extends React.Component{ 
    constructor(props){ 
     super(props); 
     this.state={card:'' } 
    } 
    onCardClick=()=>{ 
     const array=[] 
     const newCard={...this.props.card,show:true} 
     this.setState({card:newCard}) 
    } 
    render(){...} 
} 

export default Card 

새 카드를 onCardClick의 배열에 푸시하려고합니다. 나는 두 개의 소품을 가지고 있는데, 하나는 클릭하는 카드를 보여주고 다른 하나는 모든 카드의 배열을 보여줄 것입니다. 나는 filter(), push(), spread 연산자, non work까지 사용하려고 시도했다. 제발 도와주세요, 덕분에

+0

귀하는 귀하의 주에서 카드 변수를 덮어 쓰고 있습니다. 어떻게하면 –

+0

소품을 저장해서는 안됩니다. this.props.card에 무엇이 들어 있습니까? –

+0

@ Sujit.Warrier, card props는 카드의 색상, 표시 및 일치 상태 및 ID를 포함합니다. 색상이 다른 구성 요소에서 무작위로 생성됩니다. 카드 쇼가 보이거나 숨겨져 있는지 확인하기 위해 쇼와 매치를 사용합니다. – Nhat

답변

0

당신은 당신의 상태로 카드 변수를 쓰고 있습니다. 이 대신

constructor(props){ 
    super(props); 
    this.state={card:[] } 
} 

면책 조항을 : 아래의 솔루션은 새로운 카드가 내가 이해 무슨에서 선택한 카드

onCardClick=()=>{ 
    const {card} =this.state; 
    const newCard= //get selected card 
    card.push(newCard); 
    this.setState({card:newCard}) 
} 
+0

나는 그것을하려고하지만 두 번째 클릭 후 'card.push 함수가 아닙니다'오류, 또한 내 onCardClick 빈 배열에 카드를 밀어 넣으려고하는, 그것은 않았다 내가 누를 때 – Nhat

0

포함되어 있다고 가정합니다, 당신은이 개 요구 사항이 있습니다 :

  • 는 현재이 카드를 클릭보기 .
  • 사용자가 과거에 클릭 한 모든 카드를 표시합니다.

    state = { 
        cards: [], 
        showAllClickedCards: true 
    } 
    //"cards" holds the cards clicked by the user 
    //The most recent clicked card will be at the last in the the array. 
    //You can toggle "showAllClickedCards" to either show all cards or selected one 
    
    이제 여기

    당신이 onCardClick

    //Assuming the function is being passed the selectedCard 
    onCardClick = (selectedCard) => { 
        //Do something with selected card 
        this.setState(prevState => ({ 
         cards: [...prevState.cards, selectedCard] 
        })) 
    } 
    

    참고 할 수있다 : 전류를 표시하려면 여기

//Let me know if that's not the case는 2 가지 이상하고 싶지는 가정 할 수있는 일입니다 당신이 할 수있는 클릭 한 카드 this.state.cards[this.state.cards.length - 1].
희망 하시려면

+0

시도 지금 당장 고마워요 – Nhat

+0

확실한데 어떤 문제에 직면하면 게시 해주세요. –

+0

여기에 무슨 일이 있었는지, 카드를 한 번 클릭했을 때 배열이 올바르게 업데이트되었습니다. 같은 카드, 배열은 좋은 같은 카드를 추가했습니다. 하지만 다른 카드를 클릭하면 배열이 해당 카드로 업데이트되고 첫 번째 카드를 보관하지 않아 새 카드로 새 배열을 만들 수 있습니다. – Nhat