2017-09-25 29 views
0

私は "shop_name"という小道具を持っています(これはreduxから取得しています)。そして私は私の州の "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} 
     /> 

保存機能の後、この小道具は正常に更新されません。 save関数の後にnextPropsをチェックしてボタンを無効にする方法はありますか?

答えて

0

thisButtonでカプセル化されているとは思わないので、.bindを使用する必要があります。 https://medium.freecodecamp.org/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56

+0

はい、私はすべての方法をバインドしています。 Thatsはsaveメソッドの前にうまく動作します。私は新しい状態を保存し、doschang仕事が期待されたischanged。再呼び出しのロードメソッドなしで小道具が変更されていないためです。 –

+0

レンダリング状態にあるときにreduxストアの小道具を更新する必要があります。還元店に接続するコードを送信できますか? (mapStateToProps) – Eran

+0

このツールもhttps://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=ja。アクションがディスパッチされたかどうかを理解するのに役立ちます。もし店が期待どおりに更新されたら – Eran

関連する問題