상태를 설정할 때 1로 교체되는 상태의 어레이

mybb3

저는 React를 처음 사용하므로 할 수없는 일을하려고한다면 미리 사과드립니다. 상태의 "scores"배열에 선택 항목에 대한 ID와 점수를 포함하는 개체를 저장하려고합니다. handleScore라는 함수에서 객체를 빌드하고 있는데 처음 선택을 클릭하고 점수 배열을 콘솔에 즉시 기록 할 때 상태가 제대로 표시되는 것처럼 보이지만 렌더링에서 점수 배열을 콘솔에 기록하면 방법을 선택하면 1이 표시됩니다. 선택을하면 1이 표시되고 버튼을 다시 클릭합니다. 아무도 무슨 일이 일어나고 있는지 아이디어가 있습니까? 다음은 코드입니다.

    handleScore = (id, score, idx) => {
        const { statements, scores } = this.state;
        let scoreObj = {};

        Object.assign(scoreObj, {'id': id, 'score': score});

        if (statements[0][idx].isSelected) {
            this.setState({
                scores: scores[0].push(scoreObj)
            });
            console.log("scores array: ", scores[0]); //outputs an array containing [{id: "O1", score: "4"}]
        } else {
            console.log("scores array: ", scores[0]); // outputs 1
        }
    }

render () 메서드에서 :

        render() {
            console.log("this.state.scores from render method: ", this.state.scores); // outputs 1 instead of [{id: "O1", score: "4"}]
            return (
                <div>
                    <div className="statements-wrapper">
                        {
                            this.state.statements[0].map((item, index) => (
                                    <div
                                    key={item.id} onClick={(e) => {
                                                e.preventDefault();
                                                this.handleScore(item.id, match.params.score, index)
                                            }}>
                                        <a href="#">{item.statement}</a>
                                    </div>
                                )
                            )
                        }
                    </div>
                </div>
            )

예상 출력 :

            scores: [
                [{id: "O1", score: 4}, {id: "G1", score: 3}, {id: "B1", score: 2}, {id: "R1", score: 1}],
                [{id: "O2", score: 4}, {id: "G2", score: 3}, {id: "B2", score: 2}, {id: "R2", score: 1}],
                [{id: "O3", score: 4}, {id: "G3", score: 3}, {id: "B3", score: 2}, {id: "R3", score: 1}],
                [{id: "O4", score: 4}, {id: "G4", score: 3}, {id: "B4", score: 2}, {id: "R4", score: 1}],
                [{id: "O5", score: 4}, {id: "G5", score: 3}, {id: "B5", score: 2}, {id: "R5", score: 1}]
            ]
빌윗

문제는 .NET this.state.scores을 사용할 때 전체를 단일 어레이로 교체하는 데서 발생한다고 생각합니다 setState. 나머지 요소 배열을 유지하려면 다음과 같이해야합니다.

handleScore = (id, score, idx) => {
    const { statements, scores } = this.state;
    if (statements[0][idx].isSelected) {
        // this assumes you want to append the first array (hence 'index === 0') in this.state.scores
        this.setState({
            scores: scores.map((item, index) => index === 0 ? [...item, {'id': id, 'score': score}] : item)
        });
    }
}

또한 위의 방법 은 배열 push끝에 새 개체를 배치 할 뿐만 아니라 setState비동기식이므로 scores나중에 즉시 콘솔 로깅을 신뢰할 수 없다는 점에 유의하는 것이 중요합니다 .

내부 배열 중 하나에서 특정 객체를 제거하려면 filter 를 사용할 수 있습니다 .

// replacing an inner object by id value
scores.map((item, index) => index === 0 ? 
  item.filter((i) => i.id !== "01")
  : item
)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

상태 B의 상태를 설정할 때 React 후크는 상태 A의 이전 상태를 얻습니다.

분류에서Dev

ReactJS-상태 내에서 객체를 업데이트 할 때 상태 재설정 방지

분류에서Dev

데이터를 가져올 때 상태가 설정되어 있음을 알 수 있지만 상태에서 데이터를 호출하면 개체가 정의되지 않은 것으로 표시됩니다.

분류에서Dev

속성 페이지에서 확장 DLL로 afxmessagebox를 호출 할 때 mfc 교착 상태가되는 이유

분류에서Dev

상태가 설정되었을 때의 이벤트

분류에서Dev

엠버에서 데이터 모델의 상태는 "belongsTo"속성을 수정할 때 더티로 설정되지 않습니다.

분류에서Dev

객체를 상태로 사용할 때 마지막 입력 만 설정하는 setState

분류에서Dev

useState로 객체를 추가 할 때 비워지는 상태

분류에서Dev

C ++ : 논리 값으로 사용될 때 객체의 설정 상태를 반환하는 방법

분류에서Dev

vuex 상태를 읽으려고 할 때 정의되지 않음

분류에서Dev

새 상태로 라우팅 할 때 $ resource의 헤더를 업데이트하는 방법

분류에서Dev

후크로 설정할 때 반응 상태가 정의되지 않았습니다.

분류에서Dev

자식 상태가 true 일 때 부모 상태를 false로 설정하는 방법

분류에서Dev

React-해결 된 promise의 데이터로 상태를 설정하는 방법

분류에서Dev

테스트 이유로 상태 머신의 상태 설정

분류에서Dev

DataTable의 페이지 만 새로 고칠 때 상태를 지우는 방법

분류에서Dev

Object.assign으로 상태를 설정할 때 Material-UI TextField errorText가 표시되지 않음

분류에서Dev

API에서 데이터를로드 할 때 반응 후크에 설정된 상태를 저장하는 데 문제가 있습니까?

분류에서Dev

확인란을 클릭하면 상태를 설정할 때 정의되지 않은 것으로 표시됩니다.

분류에서Dev

렌더링에서 해당 상태가 필요할 때 상태를 설정하는 위치는 어디입니까?

분류에서Dev

react-native에서 로그인을 클릭 할 때 상태를 설정하는 방법은 무엇입니까?

분류에서Dev

보기가 나타날 때 UISwitch의 상태를 끄기 또는 왼쪽으로 설정하는 방법

분류에서Dev

이미지를 정의 할 때 상태가 비어 있습니다.

분류에서Dev

useState에서 객체를 상태로 사용할 때 rerenders 방지

분류에서Dev

파이썬의 멀티 프로세싱 패키지의 스폰은 부모 프로세스가 시작될 때 파일 상태를 사용합니까? 또는 프로세스를 생성 할 때 파일 상태를 사용합니까?

분류에서Dev

REST의 상태를 설정할 수없는 이유는 무엇입니까?

분류에서Dev

입력 필드를 전환 할 때마다 상태가 기본적으로 정의되지 않음

분류에서Dev

Hooks API-await 문 후 상태를 설정할 때 상태 덮어 쓰기 방지

분류에서Dev

내 상태가 객체가 아닌 배열 일 때 감속기로 상태를 업데이트하는 방법

Related 관련 기사

  1. 1

    상태 B의 상태를 설정할 때 React 후크는 상태 A의 이전 상태를 얻습니다.

  2. 2

    ReactJS-상태 내에서 객체를 업데이트 할 때 상태 재설정 방지

  3. 3

    데이터를 가져올 때 상태가 설정되어 있음을 알 수 있지만 상태에서 데이터를 호출하면 개체가 정의되지 않은 것으로 표시됩니다.

  4. 4

    속성 페이지에서 확장 DLL로 afxmessagebox를 호출 할 때 mfc 교착 상태가되는 이유

  5. 5

    상태가 설정되었을 때의 이벤트

  6. 6

    엠버에서 데이터 모델의 상태는 "belongsTo"속성을 수정할 때 더티로 설정되지 않습니다.

  7. 7

    객체를 상태로 사용할 때 마지막 입력 만 설정하는 setState

  8. 8

    useState로 객체를 추가 할 때 비워지는 상태

  9. 9

    C ++ : 논리 값으로 사용될 때 객체의 설정 상태를 반환하는 방법

  10. 10

    vuex 상태를 읽으려고 할 때 정의되지 않음

  11. 11

    새 상태로 라우팅 할 때 $ resource의 헤더를 업데이트하는 방법

  12. 12

    후크로 설정할 때 반응 상태가 정의되지 않았습니다.

  13. 13

    자식 상태가 true 일 때 부모 상태를 false로 설정하는 방법

  14. 14

    React-해결 된 promise의 데이터로 상태를 설정하는 방법

  15. 15

    테스트 이유로 상태 머신의 상태 설정

  16. 16

    DataTable의 페이지 만 새로 고칠 때 상태를 지우는 방법

  17. 17

    Object.assign으로 상태를 설정할 때 Material-UI TextField errorText가 표시되지 않음

  18. 18

    API에서 데이터를로드 할 때 반응 후크에 설정된 상태를 저장하는 데 문제가 있습니까?

  19. 19

    확인란을 클릭하면 상태를 설정할 때 정의되지 않은 것으로 표시됩니다.

  20. 20

    렌더링에서 해당 상태가 필요할 때 상태를 설정하는 위치는 어디입니까?

  21. 21

    react-native에서 로그인을 클릭 할 때 상태를 설정하는 방법은 무엇입니까?

  22. 22

    보기가 나타날 때 UISwitch의 상태를 끄기 또는 왼쪽으로 설정하는 방법

  23. 23

    이미지를 정의 할 때 상태가 비어 있습니다.

  24. 24

    useState에서 객체를 상태로 사용할 때 rerenders 방지

  25. 25

    파이썬의 멀티 프로세싱 패키지의 스폰은 부모 프로세스가 시작될 때 파일 상태를 사용합니까? 또는 프로세스를 생성 할 때 파일 상태를 사용합니까?

  26. 26

    REST의 상태를 설정할 수없는 이유는 무엇입니까?

  27. 27

    입력 필드를 전환 할 때마다 상태가 기본적으로 정의되지 않음

  28. 28

    Hooks API-await 문 후 상태를 설정할 때 상태 덮어 쓰기 방지

  29. 29

    내 상태가 객체가 아닌 배열 일 때 감속기로 상태를 업데이트하는 방법

뜨겁다태그

보관