React.js를 사용하여 속성이 있는지 확인합니다.
react.js를 처음 사용하는데, 옵션 속성이 전달된 재사용 가능한 컴포넌트를 작성하려고 합니다.컴포넌트에서는 옵션 속성이 meteo를 사용하여 DB에서 데이터를 풀하고 반환된 오브젝트에 속성이 있는지 확인하고(parent_task가 task에 존재하는지), 존재하는 경우 링크를 추가합니다.이것은 매우 간단한 것처럼 보이지만, 계속 오류가 발생합니다.제가 놓치고 있는 것에 대해 제안해 주실 분 있나요?제가 놓친 jsx gotcha가 있나요?
<Header task={params.task_id} /> // rendering component with property
// Task List Header
Header = React.createClass({
mixins: [ReactMeteorData],
getMeteorData() {
var handle = Meteor.subscribe('tasks');
return {
taskLoading: ! handle.ready(),
task: Tasks.findOne({_id: this.props.task})
}
},
getParentTaskLink() {
if (!this.data.taskLoading) {
var current_task = this.data.task;
if (parent_task in current_task) { // or current_task.hasOwnProperty(parent_task)
console.log("parent_task exists!");
}
}
},
render() {
return (
<div className="bar bar-header bar-calm">
{this.getParentTaskLink()} // eventually return anchor element here
<h1 className="title">Hello World</h1>
</div>
)
}
});
문제의 소품은 무엇입니까?어때.
{this.props.propInQuestion ? <a href="#">link</a> : null}
내가 알아냈어구문 문제였던 것 같습니다. 객체의 속성을 검색할 때 문자열을 사용해야 합니다.다음 행이 동작합니다.
if ('parent_task' in current_task)
내 작업:
if ('myProperty' in this.props) {}
또는
if (this.props.myProperty !== undefined) {}
또는
if (this.props.hasOwnProperty('myProperty')) {}
0 값은 동작하지 않기 때문에 number 속성에는 다음 조건이 적용되지 않습니다(예: 빈 문자열).
if (this.props.MaxValue) {}
React.js를 사용하여 속성이 있는지 확인합니다.
사용할 수 있는 옵션은 두 가지가 있습니다.& & 연산자와 If 스테이트먼트를 사용하여 소품이 존재하는지 확인합니다.옵션 1은 속성이 존재하는지 확인한 후 코드의 두 번째 부분을 실행합니다.if 없이 if처럼 작동합니다.
옵션 1
this.props.property && this.props.property
옵션 2
if(this.props.property){
this.props.property
}
이 기능은 함수 이름에서도 사용할 수 있습니다.
이 체크박스를 사용하여 컴포넌트 및 태그를 렌더링할 수도 있습니다.
난 이거면 돼
if(this.props.test === undefined){
console.log('props.test is not defined')
}
컴포넌트의 콜백 속성을 확인하기 위해 다음과 같은 우아한 솔루션을 사용해 보는 것이 좋습니다.
if(typeof this.props.onClickCallback === 'function') {
// Do stuff;
}
또는 파괴를 적용합니다.
const { onClickCallback } = this.props;
if(typeof onClickCallback === 'function') {
// Do stuff;
}
가장 많이 투표된 답변
props.propInQuestion ? 'a' : 'b'
소품이 부울이고 존재 여부를 확인하려는 경우 작동하지 않습니다.
JavaScript에서 객체에 키가 있는지 확인하는 방법가장 빠른 방법은props.hasOwnProperty('propInQuestion')
단, 이 경우 프로토타입 체인이 검색되지 않는다는 점에 주의해 주십시오.
기능 컴포넌트에서는 이렇게 사용할 수 있습니다.
if(props.myProperty){
//do something
}else{
//do something
}
if(props.hasOwnProperty('propertyName')){
//do something
} else {
//do something else
}
필요한 링크를 사용하여 getParentTaskLink()에서 돌아와야 합니다.
if (current_task.parent_task) {
return (<a href="#">link</a>);
} else { return null; }
언급URL : https://stackoverflow.com/questions/33761439/check-if-property-exists-using-react-js
'source' 카테고리의 다른 글
Facebook의 react.js 라이브러리 JSX 구문을 jslint로 잘 재생하려면? (0) | 2023.02.17 |
---|---|
TypeScript skipLibCheck가 node_modules libs를 아직 검사하고 있습니다. (0) | 2023.02.17 |
구성 요소 외부에서 Redux 동작을 트리거할 수 있습니까? (0) | 2023.02.17 |
Javascript window.open이 작동하지 않음 (0) | 2023.02.17 |
태플은 어떻게 JSON과 시리얼화 및 시리얼화 해제합니까? (0) | 2023.02.17 |