조건부로 추가 또는 추가하지 않는 방법반응 중인 div를 클릭하세요.
설정 가능 여부를 알고 싶습니다.onClick
내 경우 속성의 값에 따라 반응하는 div 요소에 대해canClick
.
직접 확인할 수 있다는 것을 알고 있습니다.handler
대신, 저는 내부에 구현될 솔루션을 찾고 있습니다.render
.
...
handler(){
}
render() {
const { canClick} = this.state
return (
<div onClick={this.handler}>hello</div>
)
}
...
조건을 다음과 같이 입력합니다.
onClick={canClick ? this.handler : undefined }
작업 코드:
class App extends React.Component {
_click(){
// it will not print the value
console.log('yes');
}
render(){
return (
<div>
<div onClick={false ? this._click : undefined }>Click</div>
</div>
)
}
}
ReactDOM.render(<App />, document.body);
<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>
요소 속성(onClick 등)을 개체 속성으로 처리할 수 있습니다.확산 연산자를 사용하여 onClick을 확산시키십시오.
<div
{...(canClick && { onClick: this.handler })}
>
hello
</div>
<div onClick={canClick ? this.handler : undefined} />
위변조 값을 선택하는 경우undefined
이 삼원(즉,false
또는null
) React(현재)는 다음 경고를 발생시킵니다.
"onClick={condition & & value}를 사용하여 조건부로 생략하는 경우 대신 onClick={condition? value: defined}를 전달합니다."
2020-01-05 편집:만false
는 위의 에러를 발생시킵니다(여기서 소스코드 리액트).
네, ternaru 연산자를 사용하면 가능합니다.ternaru 연산자는 왼쪽을 부울로 평가하고 참일 경우 오른쪽 또는 폴백을 실행합니다.
<div onClick={() => canClick ? this.handler() : () => false }>hello</div>
https://stackblitz.com/edit/react-uwzn4n
이거 써도 돼
{...(condition ? { onClick: () => {handleClick()}} : {})}
이러한 목적을 위해 조건부 연산자를 추가할 수 있습니다.
handler(){
}
render() {
const { canClick} = this.state
return (
<div>
{
(canClick) ?
(<div onClick={this.handler}>clickble</div>) :
(<div>not clickble</div>)
}
</div>
)
}
다음은 해당 문서의 예시입니다.reactjs.org/docs/conditional-rendering
저는 이렇게 하겠습니다.
onClick={(canClick && this.handler) || null}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
handler(){
}
render() {
const { canClick} = this.state
return (
<div onClick={()=>{canClick&&this.handler()}}>hello</div>
)
}
예를 들어 다음과 같은 함수가 있다고 가정해 봅시다.handleClick()
사용 가능하게 하고 싶다.current
하나보다 크죠?current
정수 변수를 사용하면 다음과 같은 작업을 수행할 수 있습니다.
onClick={current > 1 ? handleClick : null}
언급URL : https://stackoverflow.com/questions/48223852/how-to-conditionally-add-or-not-onclick-on-a-div-in-react
'source' 카테고리의 다른 글
HTTP POST 요구에 JSON 전달 (0) | 2023.03.10 |
---|---|
반응 네이티브 빌드 오류:virtual method'boolean com.facebook.react.uimanager를 호출하려고 합니다.FabricViewStateManager.hasStateWrapper() (0) | 2023.03.05 |
도커: 이미지 사용, 건너뛰기(도커 합성) (0) | 2023.03.05 |
WP API v1 및 v2에서 Android Loopj 이미지 업로드가 중단됨 (0) | 2023.03.05 |
반응용 콘솔 로깅? (0) | 2023.03.05 |