클립이 포함 된 트랙 테이블을 표시하는 오디오 워크 스테이션 앱을 빌드하십시오. 지금은 테이블 객체를 반환하는 테이블 축소 기가 있습니다. 테이블 개체는 트랙 개체를 포함하고 트랙 개체는 클립 개체를 포함합니다. 나는 테이블 저장소에 가입 한 TableContainer를 가지고있다. 내 문제는 클립이 추가되거나 조작 될 때마다 페이지를 렌더링하기 때문에 내 앱이 비효율적이라고 생각합니다. 실제로 클립이있는 특정 트랙 만 다시 렌더링해야합니다. 어떻게 모든 애플 리케이션을 구조화하여 모든 작은 변화가 전체 애플 리케이션을 렌더링하지 않을까요?효율성을 위해 React/Redux 앱을 구성하십시오.
답변
반응의 힘은 가상 DOM을 사용하여 비교 및 shouldComponentUpdate
기능을 사용하여 필요한 것만 다시 렌더링하는 것입니다.
성능 문제가되기 전에 너무 많이 들여다 보지 않을 것입니다.
그렇다면 트랙을 별도의 디렉토리에 저장하고 앱 (주) 구성 요소로 전달하지 마십시오. Clip
구성 요소의 mapStateToProps
함수 (react-redux를 사용하는 경우)의 상태에서 트랙을 가져오고 소품의 이름을 가져옵니다. 이 방법으로 트랙이 많이 변경되면 (예 : 조각의 비동기 가져 오기로 인해) 구성 요소 만 업데이트됩니다.
모든 구성 요소의 mapStateToProps
에서 전체로 상위 개체를 선택하여 구성 요소에 보내지 마십시오. 가능한 경우 리프 값까지의 모든 속성을 선택하십시오. TableContainer
의 render()
자체가 tracks
배열을 사용하지 않으면 사용하는 형제 속성 만 전달되는지 확인하십시오.
function mapStateToProps(state, props) {
return {
table: state.tables[props.tableId];
}
}
해야 할 것 : :
그래서 대신
는function mapStateToProps(state, props) {
let table = state.tables[props.tableId];
return {
name: table.name,
type: table.type
};
이것은 구성 요소가 다시 렌더링해야하는지 여부를 결정하는 때 더 안목으로 돌아 오는 반응 할 수 있습니다. clip
변경으로 인해 table
이 변경 되었더라도 name
또는 type
이 변경되지 않았습니다.
그러나 Table
구성 요소는 Track
구성 요소를 렌더링하기 때문에 렌더 호출을 피할 수는 없습니다. 트리 위쪽의 모든 속성이 변경되면 tracks
배열도 변경됩니다.
이 경우 해결책은 전체 track
개체를 포함하지 않고 tracks
배열에 트랙 ID 목록 만 포함시키는 것입니다. 그런 다음 테이블과 함께 트랙을 저장할 수 있으며 하나의 변경이 다른 테이블에 영향을 미치지 않습니다. 이 옵션은 Table
구성 요소의 mapStateToProps
에있는 트랙 객체를 가져 와서 전달하지 않는 경우에만 작동합니다. Track
구성 요소를 실제 오브젝트 대신 ID로 사용하도록 구성해야합니다. 이 방법으로 Table
구성 요소는 트랙의 내용에 전혀 의존하지 않습니다.
- 1. 효율성을 위해 코드 최적화
- 2. Java - 메모리 효율성을 위해 변수를 어디에서 초기화해야합니까?
- 3. LINQ는 효율성을 위해 새로운 항목을 선택합니다.
- 4. 관계형 데이터 효율성을 위해 RIA 서비스는 어떻게됩니까?
- 5. 어셈블리, 효율성을 위해 레지스터 대 변수를 사용합니까?
- 6. 효율성을 위해 웹 사이트의 이미지 크기를 조정하십시오.
- 7. 반복 코드를 피하는 방법 효율성을 높이기 위해
- 8. 효율성을 위해 여러 SQL 쿼리 병합
- 9. API를 통해 Facebook 앱을 만들고 구성하십시오.
- 10. 배치 파일을 실행하기 위해 Intellij IDEA를 구성하십시오.
- 11. C 프로그래밍을 위해 NepExec을 Notepad ++에서 구성하십시오.
- 12. g ++을 사용하기 위해 Eclipse CDT를 구성하십시오.
- 13. 차트 구성을 위해 ASP.net 4.5를 구성하십시오.
- 14. modsecurity의 로그를 보여주기 위해 오류 페이지를 구성하십시오.
- 15. SKS 편집기를 그리드에 맞추기 위해 구성하십시오.
- 16. 완전한 웹 서비스, 웹 사이트 및 아이폰 앱을 구성하십시오.
- 17. 효율성을 위해 2 가지 스크립트를 비교하는 방법은 무엇입니까?
- 18. CSS 일반 스타일 VS 특정 스타일 - 효율성을 위해
- 19. 효율성을 높이기 위해 트리플 for 루프를 줄이는 데 도움이 필요합니다.
- 20. Unodered_map 찾기 다음에 emplace가 삽입되거나 최대 효율성을 위해 삽입 만됩니까?
- 21. 효율성을 위해 ghc가 한 번만 생성기에 사용 된 목록을 변환합니까?
- 22. 가변 크기 효율성을 위해 가능한 사용자 정의 데이터 유형이 있습니까?
- 23. 효율성을 위해 클래스 외부에서 직접 ivar 액세스를 사용할 수 있습니까?
- 24. 효율성을 위해 단일 배치 쿼리 또는 매핑 쿼리?
- 25. wcf에서 65536 개 이상을 수신하도록 콘솔 앱을 구성하십시오.
- 26. C에서 행렬 연산의 효율성을 높이려면?
- 27. 오라클 효율성을 갖춘 Java PreparedStatement?
- 28. 최적화를 위해 iOS 앱을 압축해야합니까?
- 29. NServicebus ravendb 포트를 구성하십시오.
- 30. VS 2015 SFML을 구성하십시오.
페이지를 렌더링하는 데 중요하지 않은 정보가 필요한 경우 어떻게해야합니까? 클립처럼 다른 클립이 트랙에있는 위치를 알아야하지만 클립이 움직일 때 다시 렌더링 할 필요는 없습니다. –