찾다
웹 프론트엔드프런트엔드 Q&A반응 배열 변경 사항이 업데이트되지 않은 경우 수행할 작업

JS의 배열 할당이 참조로 전달되기 때문에 React 배열 변경 사항이 업데이트되지 않습니다. 해결 방법은 다음과 같습니다. 1. 해당 반응 파일을 엽니다. 2. 스프레드 연산자를 사용하여 새 배열을 만들고 메모리 참조를 변경합니다. 값을 다시 할당하려면 "panes.push({key: panels.length,tab: `${panes.length + 1}`})"를 사용하세요.

반응 배열 변경 사항이 업데이트되지 않은 경우 수행할 작업

이 튜토리얼의 운영 환경: Windows 10 시스템, 반응 버전 18.0.0, Dell G3 컴퓨터.

반응 배열이 변경되었으나 업데이트되지 않으면 어떻게 해야 하나요?

React에서 상태 배열 요소의 속성이 변경되면 setState 페이지가 업데이트되지 않습니다.

코드를 작성하는 과정에서 push 등의 방법을 직접 사용하여 상태를 논리적으로 변경하면 알 수 있습니다. 말하자면, push는 원래 배열을 변경하지만 업데이트되어야 하지만 렌더링된 상태는 변경되지 않습니다.

오늘 제가 겪은 문제는 컴포넌트의 배열 요소를 수정한 후 데이터가 변경되었으나 페이지가 다시 렌더링되지 않는다는 것입니다.

이것은 컴포넌트가 배열의 변경 사항을 인식하지 못해서 발생한다고 합니다. 페이지가 다시 렌더링되지 않습니다

그러므로 구성요소를 그대로 두면 변경된 것을 감지하면 새로 고침 효과를 얻을 수 있습니다.

이유:

이는 js에서 배열 할당이 참조로 전달되기 때문입니다. array.push는 배열에 해당하는 메모리 블록을 직접 변경하는 것과 동일하지만, React 내에서 비교에 사용되는 배열의 메모리는 변경되지 않고 동일한 메모리를 가리키는 SetState만 수행하므로 다시 렌더링되지 않습니다. 트리거되었습니다.

확산 연산자를 사용하여 새 배열을 만들고 메모리 참조를 변경할 수 있습니다.

요구 사항:

반응 배열 변경 사항이 업데이트되지 않은 경우 수행할 작업

해결책: 구조 분해 후 재할당

const onClick = (key) => {// tab点击函数
    if (key === 'addTab') {
      panes.push({
        key: panes.length,
        tab: `筛选记录${panes.length + 1}`
      })
      setPanes([...panes])
    }
  }

권장 학습: "react 비디오 튜토리얼"

위 내용은 반응 배열 변경 사항이 업데이트되지 않은 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
react中canvas的用法是什么react中canvas的用法是什么Apr 27, 2022 pm 03:12 PM

在react中,canvas用于绘制各种图表、动画等;可以利用“react-konva”插件使用canvas,该插件是一个canvas第三方库,用于使用React操作canvas绘制复杂的画布图形,并提供了元素的事件机制和拖放操作的支持。

react中antd和dva是什么意思react中antd和dva是什么意思Apr 21, 2022 pm 03:25 PM

在react中,antd是基于Ant Design的React UI组件库,主要用于研发企业级中后台产品;dva是一个基于redux和“redux-saga”的数据流方案,内置了“react-router”和fetch,可理解为应用框架。

React是双向数据流吗React是双向数据流吗Apr 21, 2022 am 11:18 AM

React不是双向数据流,而是单向数据流。单向数据流是指数据在某个节点被改动后,只会影响一个方向上的其他节点;React中的表现就是数据主要通过props从父节点传递到子节点,若父级的某个props改变了,React会重渲染所有子节点。

react中为什么使用nodereact中为什么使用nodeApr 21, 2022 am 10:34 AM

因为在react中需要利用到webpack,而webpack依赖nodejs;webpack是一个模块打包机,在执行打包压缩的时候是依赖nodejs的,没有nodejs就不能使用webpack,所以react需要使用nodejs。

react中forceupdate的用法是什么react中forceupdate的用法是什么Apr 19, 2022 pm 12:03 PM

在react中,forceupdate()用于强制使组件跳过shouldComponentUpdate(),直接调用render(),可以触发组件的正常生命周期方法,语法为“component.forceUpdate(callback)”。

react是组件化开发吗react是组件化开发吗Apr 22, 2022 am 10:44 AM

react是组件化开发;组件化是React的核心思想,可以开发出一个个独立可复用的小组件来构造应用,任何的应用都会被抽象成一颗组件树,组件化开发也就是将一个页面拆分成一个个小的功能模块,每个功能完成自己这部分独立功能。

react与vue的虚拟dom有什么区别react与vue的虚拟dom有什么区别Apr 22, 2022 am 11:11 AM

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。

react和reactdom有什么区别react和reactdom有什么区别Apr 27, 2022 am 10:26 AM

react和reactdom的区别是:ReactDom只做和浏览器或DOM相关的操作,例如“ReactDOM.findDOMNode()”操作;而react负责除浏览器和DOM以外的相关操作,ReactDom是React的一部分。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구