Vuex 변환을 사용하여 개체 참조를 업데이트하는 올바른 방법은 무엇입니까?
개체 참조가 Vue 하위 구성 요소에 전달되고 Vuex를 사용하여 개체 속성 중 하나의 값을 업데이트하려는 경우 가장 쉬운 방법은 개체 참조와 새 값을 변환에 전달하는 것입니다.변환은 단순히 전달된 객체의 속성을 업데이트합니다.
이게 합법인가요?변환이 추적 가능한 것을 제외하고, 너무 쉽고, 장황성에 가깝습니다(컴포넌트 자체에서 재할당을 실행할 수 있기 때문입니다).
다른 방법으로는 payload의 일부로 객체 ID를 전달하고 스토어를 검색하여 취득하는 변환이 있습니다.하지만 이 일이 너무 없다면 하고 싶지 않다.
마술이나 장점이라고 생각하시면 됩니다만, 이것이 vue의 동작 방식입니다(심플하고 명확하며 직관적).에반과 팀 덕분이에요
React 또는 Angular에서 온 경우 너무 쉬워서 정당성을 납득하지 못할 수 있습니다.하지만 그게 얼마나 멋진지 믿어줘
왜 변이를 직접 바꿀 수 없는지 설명해줄게
먼저 이 말을 듣겠습니다.
오류: [vuex] 아사트에서 변환 핸들러 외부의 vuex 저장소 상태를 변환하지 않습니다.
Vuex 상태는 반응성 측면에서 Vue 성분 데이터와 비슷하기 때문에 돌연변이 없이 상태를 업데이트하는 것은 좋지 않습니다.
돌연변이는 Vue의 반응성 규칙을 따릅니다.Vue에 의해 Vue 스토어 상태가 반응하므로 상태를 변환하면 상태를 관찰하는 Vue 컴포넌트가 자동으로 업데이트됩니다.
돌연변이를 저지르는 요점은 돌연변이를 저지르는 동안 상태가 변하지 않도록 하는 것입니다.
Store.commit()의 코드 내에서 _withCommit() 내부 함수를 통해 변환 코드를 실행합니다.
이 _withCommit()는 플래그를 설정하기만 하면 됩니다._commiting to true를 실행한 후 변환 코드를 실행합니다(그리고 _commiting to false를 실행 후 false를 반환합니다.
Vuex 스토어는 상태 변수를 감시하고 _commiting 플래그가 false인 동안 변수가 변경된 것을(워처가 트리거하는 것으로 알려져 있음) 발견하면 경고를 보냅니다.
상태를 직접 변경하지 않는 이유에 대한 자세한 내용은 이 답변에서 확인할 수 있습니다.
개체를 업데이트하는 가장 좋은 방법은 무엇입니까?
- 페이로드에 의한 디스패치액션(옵션)
- 페이로드에 의한 동작 커밋 변환
- 변환은 payload를 사용하여 개체를 업데이트합니다.
언급URL : https://stackoverflow.com/questions/51257306/what-is-the-correct-way-to-update-an-object-reference-using-a-vuex-mutation
'programing' 카테고리의 다른 글
Nginx에서 PHP를 실행할 때 파일을 찾을 수 없음 (0) | 2023.01.09 |
---|---|
Python의 easy_install에 설치된 패키지를 삭제하려면 어떻게 해야 합니까? (0) | 2023.01.09 |
jQuery를 사용하여 요소로 스크롤합니다. (0) | 2022.12.25 |
numpy.array 형상(R, 1)과 (R,)의 차이 (0) | 2022.12.25 |
kill - 3을 사용하여 Java 스레드 덤프를 가져옵니다. (0) | 2022.12.25 |