ReactJS - javascript를 사용하여 컴포넌트의 displayName에 접속하려면 어떻게 해야 합니까?
React 컴포넌트를 만들고 있는데 렌더링 중인 컴포넌트의 유형을 콘솔에 기록하고 싶은 경우가 있습니다.displayName
컴포넌트 이름을 표시할 때 사용합니다.
컴포넌트의 컨텍스트에서 액세스하려면displayName
부동산?
예를 들어, 어떻게 하면,console.log
displayName 컴포넌트를 나타내는 스테이트먼트를 나타냅니다.
var Hello = React.createClass({
displayName: 'HeyHey',
render: function() {
console.log(this.displayName);
return <div>Hello {this.props.name}</div>;
}
});
콘솔 출력:
안녕, 안녕.
공공재산으로 사용할 수 있습니다.this.constructor.displayName
.
아래는 양쪽의 '이름'을 취득하고 설정하는 방법을 상세하게 나타낸 코드 스니펫입니다.class
컴포넌트 및 스테이트리스 기능 컴포넌트.
그 결과,name
컴포넌트 이름에서 무료로 제공되는 속성class
코드의 구성 요소 또는 상태 비저장 기능 구성 요소.그러나 익명 클래스/함수의 경우 정의되지 않으며 코드 최소화에 의해 삭제/변경될 수도 있습니다.
커스텀을 정의할 수 있습니다.displayName
의 부동산class
커스터마이즈해야 하는 경우 컴포넌트 또는 스테이트리스 기능 컴포넌트.이는 고차 컴포넌트에 특히 유용합니다.그것은 또한 항상 최소화를 견뎌낼 것이다.
에서class
그리고 여기 명백하지 않을 수 있는 부분이 있습니다.name
그리고.displayName
클래스 자체의 속성입니다.그렇기 때문에 컴포넌트 인스턴스 내에서this.constructor.name
/this.constructor.displayName
사용하는 컴포넌트인스턴스에 대한 참조가 필요합니다.Component.name
/Component.displayName
아래 코드는 실제로 이것을 나타내고 있습니다.
컴포넌트명을 사용하는 베스트 프랙티스는 다음과 같습니다.
- 사용해보십시오.
displayName
- 정의되어 있지 않은 경우는,
name
- 정의되지 않은 경우 다음과 같은 하드코드된 문자열로 돌아갑니다.
'Component'
/'Anonymous'
class ClassComponent extends React.Component {
componentDidMount () {
if (!this.props.wrapped) {
console.log('ClassComponent')
console.log(` displayName: ${this.constructor.displayName}`)
console.log(` name: ${this.constructor.name}\n\n`)
}
}
render () {
return <div>ClassComponent {this.props.wrapped && '(wrapped)'}</div>
}
}
ClassComponent.displayName =
'ClassComponentCustom'
const SFComponent = (props) => (
<div>SFComponent {props.wrapped && '(wrapped)'}</div>
)
SFComponent.displayName =
'SFComponentCustom'
const wrap = (WrappedComponent) => {
class Wrapper extends React.Component {
componentDidMount () {
console.log('HOC')
console.log(` displayName: ${this.constructor.displayName}`)
console.log(` name: ${this.constructor.name}`)
console.log(` wrapping a Component with:`)
console.log(` displayName: ${WrappedComponent.displayName}`)
console.log(` name: ${WrappedComponent.name}\n\n`)
}
render () {
return <WrappedComponent wrapped />
}
}
// for the wrapped component
// check for displayName for something more descriptive,
// else fall back to name
const wrappedComponentName =
WrappedComponent.displayName ||
WrappedComponent.name
Wrapper.displayName =
`WrapperCustom<${wrappedComponentName}>`
return Wrapper
}
const WrappedClassComponent = wrap(ClassComponent)
const WrappedSFComponent = wrap(SFComponent)
const Example = () => (
<div className="example">
<ClassComponent />
<SFComponent />
<WrappedClassComponent />
<WrappedSFComponent />
</div>
)
ReactDOM.render(
<Example />,
document.getElementById('root')
)
.example > div {
font-family: 'Arial';
font-size: 14px;
padding: 5px 10px;
margin-bottom: 10px;
background: rgb(240,240,240);
border-radius: 4px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
에서 찾을 수 있습니다.this._descriptor.type
Hello <div>{this._descriptor.type.displayName}</div>
이것은 테스트에만 사용해 주세요.언제든지 동작을 멈출 수 있습니다.0.12에서는 작동하지 않을 것 같습니다.
언급URL : https://stackoverflow.com/questions/24708577/reactjs-how-can-i-access-the-displayname-of-a-component-using-javascript
'programing' 카테고리의 다른 글
React.js의 OnClick 이벤트 바인딩 (0) | 2023.03.05 |
---|---|
wordpress $wpdb에서 마지막으로 삽입된 ID 가져오기 (0) | 2023.03.05 |
'React'는 UMD 글로벌을 나타내지만 현재 파일은 모듈입니다. (0) | 2023.03.05 |
WebAPI 또는 MVC를 사용하여 ASP에서 JSON을 반환한다.그물 (0) | 2023.03.05 |
Jquery 창송신_송신처 (0) | 2023.03.05 |