2017-12-05 3 views
0

이벤트 핸들러에서 props를 사용하려고합니다. 이것은 내 코드 문제는 내가 '이동'핸들러 내부 this.props에 액세스 할 수 없습니다 오전이벤트 핸들러 내에서 props 사용

class Dashboard extends Component { 
    componentDidMount() { 
    var grid = new Muuri('.grid', { 
     //options... 
    }); 
    grid.on('move', (data) => { 
     console.log('ok') 
     //can't use this.props here 
    ); 
    } 
    render() {...} 
    constructor() {...} 
} 

의 일부입니다.

+0

함수를 호출하는 위치에서 'this'를 바인딩해야 할 가능성이 큽니다. –

+0

내 화살촉 함수 다음에 .bind (this)가 붙어 있어도 console.log (this)는 나를 돌려주지 않습니다. – Phobie

+0

화살표 함수를 사용하고 있으므로 this는'componentDidMount'에서와 같이 'this'를 참조해야합니다. 문제의 실행 가능한 예를 제공 할 수 있습니까? – iofjuupasli

답변

2

this.props에 대한 참조를 저장하고 이벤트 처리기에서 참조 할 수 있습니다.

또는 소멸자를 사용하여 필요한 개별 속성에 액세스 한 다음 이벤트 처리기에서 해당 속성에 액세스하십시오.

class Dashboard extends Component { 
    componentDidMount() { 

     const {prop1name, prop2Name} = this.props; 

     //OR 

     const thisProps = this.props; 




     var grid = new Muuri('.grid', { 
      //options... 
     }); 
     grid.on('move', (data) => { 
      console.log('ok') 
      //access `this.props` using `thisProps` or access individual properties. 
      )} 
     render() {} 
     constructor() {} 
    } 
+1

나는 격자 이벤트를 정의하기 전에 props 객체를 파괴하는 첫 번째 제안 된 해결책에 동의한다. –

+0

이렇게하면 this.props의 배열 내부에 데이터를 푸시 할 수 있습니까? – Phobie

+0

@Phobie'this.props'는 읽기 전용입니다. 할 수없고하지 말아야합니다. 대신에 상태 풀기를 사용하십시오 –

관련 문제