이 기사는 React의 무국적 구성 요소를 탐색합니다. 이 유형의 구성 요소에는 호출이 포함되어 있지 않으며 "소품"및 자식 구성 요소를 수신하는 프로세스 만 포함합니다.
this.state = { ... }
this.state = { … }
기본 사항 shouldComponentUpdate
디스플레이 구성 요소
import React, { Component } from 'react' class User extends Component { render() { const { name, highlighted, userSelected } = this.props console.log('Hey User is being rendered for', [name, highlighted]) return <div> <h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}} onClick={event => { userSelected() }}> {name} </h3> </div> } }
<,> 기분이 좋아요? 순수한 자바 스크립트처럼 느껴집니다. 사용중인 프레임 워크에 대해 생각하지 않고 쓸 수 있습니다.
import React, { Component } from 'react' class User extends Component { render() { const { name, highlighted, userSelected } = this.props console.log('Hey User is being rendered for', [name, highlighted]) return <div> <h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}} onClick={event => { userSelected() }}> {name} </h3> </div> } }
<<> 지속적인 재 렌더링 문제 <🎜 🎜> <🎜 🎜> <<>
를 사용하는 경우 렌더링에 시간이 낭비된다는 것을 알게 될 것입니다. 죄송합니다! 무엇을해야합니까? !
alas <🎜 🎜>. 그래서 우리는 원래 클래스 기반 구현으로 돌아가 새로운 라이프 사이클 후크 방법을 추가합니다 : <🎜 🎜>.
<<> 클래스 구성 요소로 돌아 가기const User = ({ name, highlighted, userSelected }) => { console.log('Hey User is being rendered for', [name, highlighted]) return <div> <h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}} onClick={event => { userSelected() }}> {name} </h3> </div> }
메소드에주의하십시오. 이것은 약간 추악합니다. 더 이상 기능을 사용할 수 없을뿐만 아니라 변경 될 수있는 소품을 수동으로 나열해야합니다. 여기에는
함수 소품이 변하지 않을 것이라는 대담한 가정이 포함됩니다. 이것은 거의 없지만주의가 필요합니다.
라고하며 각 소품의 "얕은 비교"를 만드는 내장 <🎜 🎜> 메소드가 있습니다. 기이! 우리가 이것을 사용하는 경우 특정 소품을 나열 해야하는 사용자 정의 메소드에서 매번 재현되기 때문입니다. 이것은 a <<> (생성자에서)
<,>는이 문제에 대한 해결책이 있습니다.이 문제는 먼저 및
한 걸음 더 나아가 봅시다. 우리는 를 사용하지 않지만 <🎜 (
<🎜 🎜> <<> 또는 <🎜 🎜> 소품이 변경 될 때만 업데이트됩니다. 상위 구성 요소가 다시 렌더링되면 사용자 구성 요소는 그렇지 않습니다. Long Live! 우리는 금을 찾았습니다! <<> 토론
동의하십시오! 생성자 및 각 레크리에이션에서 방법을 결합하는 인라인 함수를 처리해야한다는 타협 대안이 있습니다. 그것이 공개 계급 분야입니다. 바벨의 2 단계 기능이므로 설정이 지원할 수 있습니다. 예를 들어, 여기에 사용하는 지점이 있습니다.이 분기는 더 짧을뿐만 아니라 이제는 모든 비 기능 소품을 수동으로 나열 할 필요가 없음을 의미합니다. 이 솔루션은 폐쇄를 포기해야합니다. 그럼에도 불구하고, 필요할 때
RECT에 대한 자세한 내용은 "ES6 Way를 반응"하는 코스를 확인하십시오.
무국적 부품으로 React 성능을 최적화하는 것에 대한 자주 묻는 질문
react-addons-perf
<🎜 🎜> <<> reft.purecomponent Users->User
<🎜 🎜><15> 반응 15.3 이후 새로운 구성 요소 기본 클래스가 있습니다. <🎜 PureComponent
메소드를 폐기 할 수 있습니다. shouldComponentUpdate
shouldComponentUpdate
<🎜 🎜> <<> import React, { Component } from 'react'
class User extends Component {
render() {
const { name, highlighted, userSelected } = this.props
console.log('Hey User is being rendered for', [name, highlighted])
return <div>
<h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}}
onClick={event => {
userSelected()
}}>
{name}
</h3>
</div>
}
}
userSelected
<🎜 🎜> <<> (메소드 정의 자체로) render
PureComponent
<<> (사용자 구성 요소의 렌더링이 정의되는 경우) <🎜 🎜>
shouldComponentUpdate()
true
메소드가 실제로 실행되면 폐쇄에 따라 다르다는 것입니다. 특히, 반복자의 범위 변수
<🎜 🎜> <<> 구조를 권장하십시오!
import React, { Component } from 'react'
class User extends Component {
render() {
const { name, highlighted, userSelected } = this.props
console.log('Hey User is being rendered for', [name, highlighted])
return <div>
<h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}}
onClick={event => {
userSelected()
}}>
{name}
</h3>
</div>
}
}
name
<🎜 🎜>import React, { Component } from 'react'
class User extends Component {
render() {
const { name, highlighted, userSelected } = this.props
console.log('Hey User is being rendered for', [name, highlighted])
return <div>
<h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}}
onClick={event => {
userSelected()
}}>
{name}
</h3>
</div>
}
}
const User = ({ name, highlighted, userSelected }) => {
console.log('Hey User is being rendered for', [name, highlighted])
return <div>
<h3 style={{fontStyle: highlighted ? 'italic' : 'normal'}}
onClick={event => {
userSelected()
}}>
{name}
</h3>
</div>
}
shallowEqual
recompose.onlyUpdateForKeys
는 애플리케이션 성능을 최적화하는 데 도움이되는 특수 반응 구성 요소입니다.
위 내용은 상태 부족 구성 요소로 반응 성능을 최적화합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!