2017-09-25 3 views
0

나는 "shop_name"과 같은 소품을 가지고있다. 그리고 내 주 (州)의 "shop_name"과 다른이 소품을 확인하고 내 버튼을 비활성화해야합니다.상태를 확인하려면 어떻게해야합니까?

지금은이 방법을 통해 확인하고 있습니다.

isChanged() { 
    const changedShopName = this.state.shop_name !== this.props.shop_name; 

    return changedShopName; 
} 

그리고 나는 onchange func을 사용하여 새 상태를 전달하고 있습니다. 이 저장 기능으로 절약 할 수 있습니다.;

onChange(event) { 
    const name = event.target.name; 
    const value = event.target.value; 

    this.setState({ 
    [name]: value 
    }); 
} 

saveSellerInfos() { 
    const data = { 
    shop_name: this.state.shop_name, 
    }; 

    this.props.saveSellerInformations(data); 
} 

여기에는 비활성화 된 입력란이 있습니다.

<Button 
     onClick={this.saveSellerInfos} 
     disabled={!this.isChanged()} 
     label={t('Save')} 
     className={styles.save} 
     /> 

저장 기능 후이 소품은 정상적으로 업데이트되지 않습니다. 저장 기능을 수행 한 후 nextProps를 확인하고 버튼을 사용할 수 없게하려면 어떻게해야합니까?

답변

0

thisButton에 캡슐화되어 있지 않다고 생각하면 .bind을 사용해야합니다. 여기에 설명 된대로 : https://medium.freecodecamp.org/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56

+0

예, 모든 방법을 바인딩합니다. 그게 저장 방법 전에 잘 작동합니다. 내가 새로운 상태를 저장하고 ischanged dosent 작업을 예상했다. 재 호출로드 방법을 사용하지 않으면 소품이 변경되지 않기 때문에 ... –

+0

렌더링 상태에있을 때 redux 저장소 소품을 업데이트해야합니다. redux 저장소에 연결하는 코드를 보낼 수 있습니까? (mapStateToProps) – Eran

+0

또한이 도구는 https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=ko입니다. 작업이 전달되는지 그리고 저장소가 예상대로 업데이트되었는지 이해하는 데 도움이 될 것입니다. – Eran

관련 문제