小道具と状態の破壊を促進するeslintのairbnb構成を追加しました
class MyComponent extends Component {
state = {
animation: this.props.active ? 1 : 0
}
エラーが発生します
[eslint]破壊の小道具割り当てを使用する必要があります(react/destructuring-assignment)
ここで小道具からactive
を正しく分解する方法がわかりませんか?通常、const {active} = this.props
は動作しますが、状態内またはその周辺に配置すると、予期しない構文エラーが発生します。
クラスプロパティ内に保持する唯一の方法は、ゲッター(最初のレンダリングで呼び出されます)を使用することです。
state = {
get animation() {
const { active } = this.props;
return active ? 1 : 0;
}
}
または、IIFEを使用してプロパティを初期化します。
state = (() => {
const { active } = this.props;
return { animation: active ? 1 : 0 };
})()
しかし、実際には少し複雑です。別の解決策は、プロパティをコンストラクタに移動することです。
constructor(...args) {
super(...args);
const { active } = this.props;
this.state = { animation: active ? 1 : 0 };
}
しかし、私は個人的にはこの警告を無視します。
このルールを.eslintrc.json
に追加できます
"rules": {
"react/destructuring-assignment": [
"error",
"always",
{
"ignoreClassFields": true
}
]
},